#include<stdio.h>
#include<string.h>
int dp[100005],a[100005];
int main()
{
int i,j,n,max=0;
while(scanf("%d",&n)!=EOF)
{
max=0;
memset(dp,0,sizeof(dp)); // 等价于for(i=0;i<=n;i++) dp[i]=0; dp[i]记录每个以i结尾的最大等差数列
memset(a,0,sizeof(a)); //初始化a数组的数值
for(i=1;i<=n;i++) //赋值
{
scanf("%d",&a[i]);
dp[i]=2;
}
for(i=3;i<=n;i++) //以为dp[i]记录每个以 i 结尾的… 所以 i从1循环 到 n 记录 是为了求dp[1]到dp[n]
{
if(a[i]-a[i-1]==a[i-1]-a[i-2]) dp[i]=dp[i-1]+1; //如果满足等差 dp[i]=dp[i-1]+1
else dp[i]=2; //如果不满足 则以当前数的上一个数字为数列的第一个数 重新开始计算等差数列长度
if(n==1)max=1;
if(max<dp[i])max=dp[i]; //求所有dp[i]中的最大值 若有比max大的书 max=dp[i]
}
printf("%d\n",max);
}
return 0;
}
#include<string.h>
int dp[100005],a[100005];
int main()
{
int i,j,n,max=0;
while(scanf("%d",&n)!=EOF)
{
max=0;
memset(dp,0,sizeof(dp)); // 等价于for(i=0;i<=n;i++) dp[i]=0; dp[i]记录每个以i结尾的最大等差数列
memset(a,0,sizeof(a)); //初始化a数组的数值
for(i=1;i<=n;i++) //赋值
{
scanf("%d",&a[i]);
dp[i]=2;
}
for(i=3;i<=n;i++) //以为dp[i]记录每个以 i 结尾的… 所以 i从1循环 到 n 记录 是为了求dp[1]到dp[n]
{
if(a[i]-a[i-1]==a[i-1]-a[i-2]) dp[i]=dp[i-1]+1; //如果满足等差 dp[i]=dp[i-1]+1
else dp[i]=2; //如果不满足 则以当前数的上一个数字为数列的第一个数 重新开始计算等差数列长度
if(n==1)max=1;
if(max<dp[i])max=dp[i]; //求所有dp[i]中的最大值 若有比max大的书 max=dp[i]
}
printf("%d\n",max);
}
return 0;
}