BUPT复试专题—最长连续等差子数列(2014软院)
题目描述
注意公差小于或等于0的情况也是允许的。
输入
第一行为数据组数T(1~100),表示测试数据的组数。
对于每组测试数据:
第一行是一个正整数N (1~ 100),表示给定数列的长度^
第二行是N个整数,其中第丨个整数valuei (1<= valuei <= 10s)表示下标为i 的数字。
对于每组测试数据:
第一行是一个正整数N (1~ 100),表示给定数列的长度^
第二行是N个整数,其中第丨个整数valuei (1<= valuei <= 10s)表示下标为i 的数字。
输出
样例输入
2
2
1 3
5
1 6 4 2 4
样例输出
2
3
提示
两组样例的最长连续等差子数列分别是{1,3}和{6,4,2}
来源
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<map> #include<queue> #define maxn 1000 using namespace std; int main() { int tes,num,shit; while(~scanf("%d",&tes)) { while(tes--) { cin>>num; int donser[maxn],minus,now,last,number=0,max_number=0,j=2; for(int i=0;i<num;i++) { cin>>donser[i]; } if(num==1) { cout<<"1"<<endl; continue; } now=donser[1]; last=donser[0]; max_number=number=2; minus=now-last; while(j<num) { last=now; now=donser[j]; if(minus==now-last) { number++; if(number>max_number) max_number=number; } else { minus=now-last; number=2; } j++; } cout<<max_number<<endl; } } return 0; }