王道机试指南 例题12.8 Piggy-Bank

题目:

题目大意:

算法梳理:

这是一道“背包问题”的应用。“背包问题”分为“0-1背包问题”和“完全背包问题”。

  • 0-1背包问题

  • 完全背包问题

本题思路:

代码:

#include <iostream>
#include <ostream>

using namespace std;

const int MAXN=10000;

int main(){
    int t;
    cin>>t;
    for(int k=0;k<t;k++){
        int e,f;
        cin>>e>>f;
        int m=f-e;//相当于背包总重量
        int n;
        cin>>n;//相当于物品件数
        int v[n],w[n];//相当于每件物品的价值和重量
        for(int i=0;i<n;i++)
            cin>>v[i]>>w[i];

        int dp[m+1];
        dp[0]=0;//dp[0]初始化为0
        for(int j=1;j<=m;j++)//由于所求为最小值,其他dp[i]初始化为正无穷
            dp[j]=MAXN;

        for(int i=0;i<n;i++)
            for(int j=w[i];j<=m;j++)
                dp[j]=min(dp[j],dp[j-w[i]]+v[i]);//状态转移方程

        if(dp[m]==MAXN)
            cout<<"This is imppossible."<<endl;
        else
            cout<<"The minimum amount of money in the piggy-bank is "<<dp[m]<<"."<<endl;
    }
    return 0;
}

运行结果:

全部评论
感谢分享题目
点赞 回复 分享
发布于 2023-02-24 22:30 广东
算法解释的很清楚
点赞 回复 分享
发布于 2023-02-22 21:54 广东

相关推荐

不愿透露姓名的神秘牛友
07-09 11:30
找工作7个月,投了7000封,3段世界五百强实习,才有一个offer,牛油们肯定比我强吧
码农索隆:不对不对不对,实习经历这么厉害,简历也没少投,问题出在哪呢
点赞 评论 收藏
分享
嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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