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不了了,但是找不出原因,求大佬帮忙看看~
题例可以通过,我自己编的几个例子也都是可以通过的……

