题解 | #最大上升子序列和#

最大上升子序列和

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

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;cin>>n;
    int arr[n],dp[n];
    for(int i =0;i<n;i++)
        dp[i]=0;
    for(int i =0;i<n;i++)
        cin>>arr[i];
    dp[0] = arr[0];
    for(int i =1;i<n;i++){
        //找他之前的元素,找到比他小且dp最大的值
        int maxDp=-1;
        bool isFind=false;
        for(int j=0;j<i;j++)
            if(dp[j]>maxDp&&arr[j]<arr[i]){
                maxDp=dp[j];
                isFind=true;
            }   
        //加上该元素
        if(isFind)dp[i] = arr[i]+maxDp;
        else dp[i]=arr[i];
    }
    cout<<*max_element(dp,dp+n);
}
// 64 位输出请用 printf("%lld")

二重for循环,O(n^2)

全部评论

相关推荐

Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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