有c++求解,别用Java了,不会

【问题描述】求数列中连续数值组成的等差数列最大长度
【输入形式】
共两行,第一行输入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;

}

遍历数组,两两比较,记录差值。如果差值相同,则统计数量。保留数量最大的数列起点和数量即可