HDU 1087 Super Jumping! Jumping! Jumping!

题解:最长上升子序列的扩展应用,不过,加上的是当前值,而不是1

/*最长上升子序列扩展应用*/
#include <cstdio>
using namespace std;
int n,d[1050],a[1050];
int dp()
{
    int rs=0;
    for(int i=1;i<=n;i++)
    {
        d[i]=a[i];
        for(int j=1;j<i;j++)
        if(a[i]>a[j]&&a[i]+d[j]>d[i])d[i]=a[i]+d[j];
        if(d[i]>rs)rs=d[i];
    }
  return rs;
}
int main()
{
    while(scanf("%d",&n),n)
    {
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        printf("%d\n",dp());
    }
    return 0;
}

 

posted @ 2014-01-22 08:04  forever97  阅读(141)  评论(0编辑  收藏  举报