题目描述 给定 � n 个数,从中找出尽可能多的数使得他们能够组成一个等差数列.求最长的等差数列的长度. 输入格式 第一行是一个整数 � n ,接下来一行包括了 � n 个数。 输出格式 对于每个输入数据,输出你所找出的最长等差数列的长度,N<=4000 代码c++
时间: 2024-01-19 08:03:06 浏览: 133
c#等差数列计算
3星 · 编辑精心推荐
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++)
cin >> a[i];
int res = 0;
unordered_map<int, int> dp[n];
for (int i = 1; i < n; i++)
{
for (int j = 0; j < i; j++)
{
int diff = a[i] - a[j];
if (dp[j].count(diff))
dp[i][diff] = dp[j][diff] + 1;
else
dp[i][diff] = 2;
res = max(res, dp[i][diff]);
}
}
cout << res << endl;
return 0;
}
阅读全文