0
已解决
胡景波
中级光能
中级光能
5097 等差子序列
经验值:0 时间限制:1000毫秒
题目描述 Description
求一个序列中最长公差为d的等差子序列的长度。
例如:
d=3
1 2 4 6 9 12 15 3
该序列的最长公差为3的子序列是6 9 12 15 长度为4
输入描述 Input Description
第一行输入一个正整数n和子序列的等差值d
第二行输入含n个正整数序列;
输出描述 Output Description
输出最长公差为d的等差子序列的长度
样例输入 Sample Input
8 3 1 2 5 6 9 12 15 3
样例输出 Sample Output
4
数据范围及提示 Data Size & Hint
n<30000,每个数字小于等于100
#include<iostream>
#include<cstdlib>
using namespace std;
int n,a[50005],d,f[50005],maxw;
int main(){
cin>>n>>d;
for(int i=1;i<=n;i++){
cin>>a[i];
}
f[1]=1;
for(int i=2;i<=n;i++){
if(a[i]-a[i-1]==d){
f[i]=f[i-1]+1;
}
else f[i]=1;
maxw=max(maxw,f[i]);
}
cout<<maxw;
return 0;
}