标签:
http://acm.hzau.edu.cn/problem.php?id=21
题目大意: 给你一个序列问在数字最多的等比数列
分析: 刚开始看到题就知道是一个dp但是我dp实在是渣到不行
后来发现用二维dp 第二位保存i到j的差
#include <iostream> #include <queue> #include <cstdio> #include <cstring> #include <cstdlib> #include <stack> #include <algorithm> using namespace std; #define N 2050 #define memset(a,b) memset(a,b,sizeof(a)) int dp[N][N]; int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<=2020;i++) { for(int j=0;j<=2002;j++) { dp[i][j]=1; } } int a[N]; memset(a,0); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } sort(a,a+n); int Max=1; for(int i=0;i<n;i++) { for(int j=0;j<i;j++) { int d=a[i]-a[j]; dp[i][d]=dp[j][d]+1; Max=max(Max,dp[i][d]); } } printf("%d\n",Max); } return 0; }
21: Arithmetic Sequence--HZAU(dp)
标签:
原文地址:http://www.cnblogs.com/linliu/p/5497864.html