题解 | #点菜问题#

点菜问题

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

#include <iostream>

using namespace std;

const int MAXN = 101;
const int MAXP = 1001;

// dp数组在主函数外定义,元素自动初始化0
int dp[MAXN][MAXP], v[MAXN], w[MAXN];

int main(){
    int c,n;
    while (cin>>c>>n){

        for (int i = 1; i <= n; ++i) {
            cin>>w[i]>>v[i];
        }

        // 双层遍历
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= c; ++j) {
                if (j>=w[i]){
                    dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i]);
                } else{
                    dp[i][j] = dp[i-1][j];
                }
            }
        }

        cout<<dp[n][c]<<endl;
    }
    return 0;
}

全部评论

相关推荐

01-16 18:34
四川大学 Java
欢迎加入AI:没有啥稳定不稳定,一切都源于业务快速发展还是收缩。我当年一开始去的央企,业务不赚钱,也贼卷,慢慢就开始优化了。。。
点赞 评论 收藏
分享
02-23 00:10
湖南大学 C++
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务