A题,用例通过率0%,求大佬帮忙看看
#include<stdio.h> int main(){ int T; scanf("%d",&T); while(T--){ int n,i; scanf("%d",&n); //a是上升区间左端点,b是右端点,s是输入的数据。ti是当前上升区间起始点,maxed是最大值,ta是a,b数组当前使用的下标 int a[n],b[n],s[n],ti=0,maxd=0,ta=0; scanf("%d",s);//先手把第一个数字输入进来,反正n>=2,这样子防止下面的i-1越界 for(i=1;i<n;i++){ scanf("%d",s+i); if(s[i]<s[i-1]){//当后面一个数字比前面一个大的时候表示上升结束 int tdis = s[i-1]-s[ti]; if(tdis>maxd){//当maxd要更新的时候,初始化a,b数组 memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); ta=0; a[ta]=ti; b[ta++]=i-1; maxd=tdis; }else if(tdis==maxd)a[ta]=ti,b[ta++]=i-1;//当最大长度相等的时候就只在后面补 ti=i;//更新最大序列 } } //结束的时候检查一遍,防止漏掉最后一组 if(s[n-1]>=s[n-2]){ int tdis = s[i-1]-s[ti]; if(tdis>maxd){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); ta=0; a[ta]=ti; b[ta++]=n-1; maxd=tdis; }else if(tdis==maxd)a[ta]=ti,b[ta++]=n-1; } //输出 printf("%d %d",a[0]+1,b[0]+1); for(i=1;i<ta;i++)printf(" %d %d",a[i]+1,b[i]+1); //换行 printf("\n"); } }
我人都傻了,A题都AC不了了,但是找不出原因,求大佬帮忙看看~
题例可以通过,我自己编的几个例子也都是可以通过的……