题解 | 最大上升子序列和

最大上升子序列和

https://www.nowcoder.com/practice/dcb97b18715141599b64dbdb8cdea3bd

#include <algorithm>
#include <iostream>
using namespace std;
const int N = 1005;
int dp[N],A[N];

int main() {
    int n;
    while (cin >> n) { // 注意 while 处理多个 case
        for(int i = 1;i<=n;i++)cin>>A[i];

        for(int i = 1;i<=n;i++){
            dp[i]=A[i];
            for(int j=1;j<i;j++){
                if(A[j]<A[i])dp[i]=max(dp[i],dp[j]+A[i]);
            }
            
        }
        sort(dp+1, dp+1+n);

        cout<<dp[n]<<endl;

    }
}
// 64 位输出请用 printf("%lld")

思路:动态规划

状态转移方程:

if(A[j]<A[i])dp[i]=max(dp[i],dp[j]+A[i]);

全部评论

相关推荐

用微笑面对困难:不是你千万别小看这家公司,他们的预估市值成倍上涨,三次在报告看见这个公司了,总之如果是给股权的话可以试试,未来没准真能发家致富哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务