笨-Archangel

导航

acm hdu 1087 Super Jumping! Jumping! Jumping!

#include<iostream>
#include<cstdio>
using namespace std;
#include<cstring>
int main()
{
    int N;
    int d[1000],num[1000];
    while(cin>>N,N)
    {
        int i,j,sum=0;
        for(i=0;i<N;i++)
        cin>>num[i];
        for(i=0;i<N;i++)
        {
            d[i]=num[i];
            for(j=0;j<i;j++)
            {
                if(d[i]<d[j]+num[i]&&num[i]>num[j])
                    d[i]=d[j]+num[i];
            }
            if(d[i]>sum)
                sum=d[i];
        }
        cout<<sum<<endl;
    }
    return 0;
}

这题是最基础的DP,要正确理解什么是状态转移。其他不说了,留给读者自己思考

posted on 2012-05-03 15:25  笨-Archangel  阅读(139)  评论(0)    收藏  举报