问题标题: 酷町堂:5097 等差子序列 经验值:1200 时间限制:1000毫秒 内存限制:128MB 题目描述 De**ion 求一个序列中最长公差为d的等差子序列的长度。 例如: d=3 1 2 4 6 9 12 15 3 该序列的最长公差为3的子序列是6 9 12 15 长度为4 输入描述 Input De**ion 第一行输入一个正整数n和子序列的等差值d 第二行输入含n个正整数序列; 输出描述 Output De**ion 输出最长公差为d的等差子序列的长度 样例输入 Sample Input 8 3 1 2 5 6 9 12 15 3 样例输出 Sample Ou

0
0
已解决
胡逸晖
胡逸晖
修练者
修练者

题目链接: 酷町堂:5097

 

  • #include<iostream> using namespace std; int n,d,ans; int a[30005]; int f[30005]; //f[i]:1--i的最长等差子序列 int b[210];//桶数组 int h[210]; //h[i]:数值为i的数的下标 int main(){ cin>>n>>d; for(int i=1;i<=n;i++){ cin>>a[i]; a[i]+=100; b[a[i]]++; h[a[i]]=i; } for(int i=1;i<=n;i++){ if(b[a[i]-d]!=0&&h[a[i]-d]<i){ f[i]=f[h[a[i]-d]]+1; }else{ f[i]=1; } ans=max(ans,f[i]); } cout<<ans; return 0; }

 


0
我要回答