码迷,mamicode.com
首页 > 其他好文 > 详细

21: Arithmetic Sequence--HZAU(dp)

时间:2016-05-16 14:35:45      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!