【问题描述】求数列中连续数值组成的等差数列最大长度
【输入形式】
共两行,第一行输入n,表示数列的长度;第二行输入n个大于0的整数。【输出形式】
输出连续数值组成的等差数列最大的长度【样例输入】
1
3 2 1 1 5 9 13【样例输出】
4
【样例说明】无
【评分标准】0<n<1000
代码如下:
#include <iostream>
using namespace std;
int main()
{
int a[100],i,n;
int shift,nmb=0,max=0;
cin >> n;
for(i=0;i<n;i++)
cin >> a[i];
shift = a[1]-a[0];
i=2;
nmb = 2;
while(i<n)
{
if(a[i] - a[i-1] == shift)
{
i++;
nmb++;
}else
{
if(nmb > max) max = nmb;
shift = a[i] - a[i-1];
nmb=2;
i++;
}
}
if(nmb > max) max = nmb;
cout << max<<endl;
return 0;
}
遍历数组,两两比较,记录差值。如果差值相同,则统计数量。保留数量最大的数列起点和数量即可