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;

}

 

你可能感兴趣的:(super)