最长连续等差子数列
描述:给定一个长度为N的整数数列,你需要在其中找到最长连续子数列的长度,并满足这个子数列是等差的。注意公差小于或等于0的情况也是允许的。
输入:第一行为测试数据的组数T(1<=T<=100)。请注意,任意两组测试数据之间是相互独立的。
每组数据包含两行:
第一行为一个整数N(1<=N<=100),表示给定数列长度。
第二行为N个正整数,其中第i个整数valuei(1<=valuei <=10^5)表示下标为i的数字。
#include <iostream> #include<cstdio> #include<string.h> using namespace std; int main() { int T; cin>>T; while(T--){ int N; scanf("%d",&N); int num[N]; memset(num,0,sizeof(num)); for(int i=0;i<N;i++) scanf("%d",&num[i]); if(N<=2)//如果长度小于等于2,就直接是等差了 printf("%d\n",N); else{ int tmp_max_len=2; int max_len=2; for(int i=2;i<N;i++){ if((num[i]-num[i-1])==(num[i-1]-num[i-2])){ tmp_max_len++; if(max_len<tmp_max_len) max_len=tmp_max_len; } else tmp_max_len=2; } printf("%d\n",max_len); } } return 0; }