竞赛讨论区 > 求大佬帮忙看看哪里了问题,为啥只有90%的case通过率

求大佬帮忙看看哪里了问题,为啥只有90%的case通过率

头像
牛客309718985号
发布于 2020-11-26 19:44:03 APP内打开
赞 1 | 收藏 0 | 回复0 | 浏览295

#include<stdio.h>
int main(){
    int n,d=1,f=0;                //用d来记录子序列长度
    scanf("%d",&n);
    int a[n];
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int c=0;c<n;c++){
        int m=0,k=0;
        for(int b=c;b<n-1;b++)
        {
            if((a[b]<a[b+1])&&(m==0))d++;
            else if((a[b]>=a[b+1])&&(m==1))break;
            else if((a[b]>=a[b+1])&&(m==0)&&(b!=c)){d++;m=1;k=a[b];}         //子序列的第一个元素比较特殊,所以我分了类,这是当a[b]>=a[b+1]时, a[b]不为子序列第一个元素的情况
            else if((a[b]>=a[b+1])&&(b==c)){d++;m=1;k=0;}                            //这是当a[b]>=a[b+1]时,a[b]为子序列第一个元素的情况
            else if((a[b]<a[b+1])&&(m==1)&&(a[b+1]<=k))break;
            else if((a[b]<a[b+1])&&(m==1)&&(a[b+1]>k)){d++;k=a[b];}
        }if(d>f)f=d;          最大的子序列长度即为想要的值
        d=1;                子循环结束后d初始化为1
    }
    printf("%d",f);
    return 0;
}

0条回帖

回帖
加载中...
话题 回帖

本文相关内容

近期热帖

等你来战

查看全部

热门推荐