题解 | #点菜问题#

点菜问题

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

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

int main(){
    int c,n;
     vector<pair<int,int>> price;
     while(scanf("%d%d",&c,&n) != EOF){
    for(int i = 0 ; i < n ; ++i){
        int a,b;
        scanf("%d%d",&a,&b);
        price.emplace_back(a,b);
    }
    vector<vector<int>> dp(n + 1, vector<int>(c + 1, 0));
    for(int i = 1 ; i <= n ; ++i){
        for(int  j = 1 ; j <= c ;++j){
            if(j >= price[i-1].first){
                dp[i][j] = max(dp[i-1][j],dp[i - 1][j - price[i - 1].first] + price[i - 1].second);
            }else{
                dp[i][j] = dp[i-1][j];
            }
        }
    }
    printf("%d",dp[n][c]);
     }
     return 0;
}

全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
叁六玖:你看,最后不是让你加油,就是鼓励你,还祝福你求职顺利。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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