您的位置:首页 > 其它

hdu 1087 Super Jumping! Jumping! Jumping!

2015-07-20 11:16 267 查看
题意:起点到终点的上升子序列里面的最大值。设dp【i】表示所求,则

dp[i] = max( dp[i], dp[j] + val[i] );

const int N = 1005;

int dp
, val
;

int main()
{
    int n;
    while( ~scanf("%d", &n) && n ) {
        for( int i = 1; i <= n; ++i ) {
            scanf("%d", &val[i]);
            dp[i] = val[i];
        }
        for( int i = 1; i <= n; ++i ) {
            for( int j = 1; j < i; ++j ) {
                if( val[i] > val[j] ) {
                    dp[i] = max( dp[i], dp[j] + val[i] );
                }
            }
        }
        int ans = -inf;
        for( int i = 1; i <= n; ++i ) {
            ans = max( ans, dp[i] );
        }
        printf("%d\n", ans);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: