您的位置:首页 > 其它

P1003

2016-05-18 22:33 260 查看
解题思路:类似最长递增子序列的想法,只不过这里求的是到第i个元素时,最长递增子序列,各个元素的和。求最大的那个值

AC代码:

#include <stdio.h> 

#include <string.h> 

#include <algorithm> 

using namespace std; 

 

int a[1005],dp[1005]; 

const int inf = 999999999; 

 

int main() 



    int n,i,t,m,j,ans; 

    while(~scanf("%d",&n),n) 

    { 

        memset(dp,0,sizeof(dp)); 

        for(i = 1;i<=n;i++) 

        scanf("%d",&a[i]); 

        for(i = 1;i<=n;i++) 

        { 

            ans = -inf; 

            for(j = 0;j<i;j++) 

            { 

                if(a[i]>a[j]) 

                ans = max(ans,dp[j]); 

            } 

            dp[i] = ans+a[i]; 

        } 

        ans = -inf; 

        for(i = 0;i<=n;i++) 

        { 

            if(dp[i]>ans) 

            ans = dp[i]; 

        } 

        printf("%d\n",ans); 

    } 

 

    return 0; 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: