题解 | #删除相邻数字的最大分数#

删除相邻数字的最大分数

https://www.nowcoder.com/practice/3bcf72c738b6494bbe1ebe0ffde56152

先做简单的数据处理,合并相同的数字,然后可以当成偷盗问题

#include <iostream>
#include <vector>
using namespace std;

int main() {
    //ai<10^4
    int n,t,i;
    cin>>n;
    vector<int> items;
    while(n-- && cin>>t){
        if(t+1>items.size())items.resize(t+1,0);
        items[t]+=t;
    }
    vector<int> dp(items.size(),0);
    dp[1]=items[1];//避免每次循环都判断i有没有大于1,直接做了
    for(int i=2;i<dp.size();i++){
        dp[i]=max(dp[i-1],dp[i-2]+items[i]);
    }
    //printa(items);
   // printa(dp);
    cout<<dp[dp.size()-1]<<endl;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务