购物单 && 动态规划 && 背包问题
题目叙述的言语倒是蛮多的:
主件 | 附件 |
电脑 | 打印机,扫描仪 |
书柜 | 图书 |
书桌 | 台灯,文具 |
工作椅 | 无 |
输入的第 1 行,为两个正整数,用一个空格隔开:N m
输出描述:

我还是没有深刻地理解且解决之!参考大佬们的代码如下:
#include <iostream>
using namespace std; int getMax(int x, int y){
return (x > y ? x : y);
} int main(){
int N; //总钱数
int m; //希望购买的物品个数
int weight[][]={}; //价格(成本)
int value[][]={}; //价值(重要度*价格)
int f[][]; //第i个物品在j容量下可以获得的最大价值
int i,j; cin >> N >> m;
N/=; //都是10的整数,先除以10,减少循环次数
//存储清单
for(int i=;i<=m;i++){
int v; //该物品价格
int p; //该物品价值
int q; //该物品主件还是附件
cin >> v >> p >> q;
v/=; if(q==){ //主件
weight[i][]=v;
value[i][]=p*v;
}
else{ //附件
if(weight[q][]==){ //第一个附件
weight[q][]=v;
value[q][]=p*v;
}
else{ //第二个附件
weight[q][]=v;
value[q][]=p*v;
}
}
}
//遍历计算
for(i=;i<=m;i++)
for(j=N;j>;j--){
if(j>=weight[i][]) //可以容下第i个主件时,比较放第i个或者不放第i个物品的价值
f[i][j]=getMax(f[i-][j],f[i-][j-weight[i][]]+value[i][]);
if(j>=weight[i][]+weight[i][]) //可以容下第i个主件和此主件的第1个附件时
f[i][j]=getMax(f[i-][j],f[i-][j-weight[i][]-weight[i][]]+value[i][]+value[i][]);
if(j>=weight[i][]+weight[i][]) //可以容下第i个主件和此主件的第2个附件时
f[i][j]=getMax(f[i-][j],f[i-][j-weight[i][]-weight[i][]]+value[i][]+value[i][]);
if(j>=weight[i][]+weight[i][]+weight[i][]) //可以容下第i个主件和此主件的第1个附件和第2个附件时
f[i][j]=getMax(f[i-][j],f[i-][j-weight[i][]-weight[i][]-weight[i][]]+value[i][]+value[i][]+value[i][]);
}
cout << f[m][N]* << endl;
}
背包问题,道阻且长!https://www.nowcoder.com/questionTerminal/f9c6f980eeec43ef85be20755ddbeaf4
购物单 && 动态规划 && 背包问题的更多相关文章
- P1060 开心的金明(动态规划背包问题)
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱 ...
- 动态规划(背包问题):HRBUST 1377 金明的预算方案
金明的预算方案 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行 ...
- 蓝桥杯 购物单(使用word协助)
标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折 ...
- js动态规划---背包问题
//每种物品仅有一件,可以选择放或不放 //即f[i][w]表示前i件物品恰放入一个容量为w的背包可以获得的最大价值. //则其状态转移方程便是:f[i][w]=max{f[i-1][w],f[i-1 ...
- 2017第八届蓝桥杯C/C++ B组省赛-购物单
标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折 ...
- 【BZOJ1042】硬币购物(动态规划,容斥原理)
[BZOJ1042]硬币购物(动态规划,容斥原理) 题面 BZOJ Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬 ...
- 购物单:Excel的应用
题目描述: 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠 ...
- 2017蓝桥杯购物单(C++B组)
原题: 标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.这不,XX大促销又来了!老板夫人开出了长长的购物单,都是 ...
- Java实现第八届蓝桥杯购物单
购物单 题目描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打 ...
随机推荐
- 线段树(lazy标记)-- 模板
], lazy[MAXN << ]; void PushUp(int rt) { ans[rt] = ans[rt << ] + ans[rt << | ]; } ...
- DFS-C - N皇后问题
C - N皇后问题 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,求出有多少种合法的放 ...
- ZOJ 4082 Little Sub and his Geometry Problem题解
题意 f(u,v):x小于等于u且y小于等于v的点才对f有贡献,每个这样的点贡献(u-x)+() 思路 =f(u_2,v_2)" class="mathcode" src ...
- ES6实现图片切换特效
效果图 demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 通过nginx实现多个域名访问同一个服务器
一台服务器通过nginx配置多个域名(80端口) 参考:https://www.cnblogs.com/ruanjianlaowang/p/11182486.html 1. 问题描述 多个域名对应一 ...
- 微信小程序期末复习
过什么六一,复习不完了... 第1章作业 一.单选题(共10题,100.0分) 1以下哪个不是主流的手机操作系统? A.Android B.iOS C.Windows Phone D.Blackber ...
- Spring Boot的Web配置
一.使用YML文件配置多套环境
- 在线教育厮杀惨烈,51Talk一家独大之后,却仍是持续亏损?
编辑 | 于斌 出品 | 于见(mpyujian) 来自51Talk在线少儿英语专业的学生陈和涛已经成为最近<快乐营大本营>的一个亮点.该学生应邀以流利的英语在台上作自我介绍,并与51Ta ...
- gogs迁移至gitlab
一.先来聊一聊迁移的思路,不管是gogs迁移至gitlab,还是gitlab迁移至gogs,亦或gitlab迁移至gitlab,手动迁移的步骤都是如下图所示(在gitlab上新建一个空项目就会有这样的 ...
- HashMap,ConcurrentHashMap原理。Collection(list,set,map集合区别)。和CAS
collection里面有什么子类?(list和set是实现了collection接口的.) List: 1.可以允许重复的对象(可重复,有序集合).2.可以插入多个null元素.3.常用的实现类有 ...