购物单 && 动态规划 && 背包问题
题目叙述的言语倒是蛮多的:
| 主件 | 附件 |
| 电脑 | 打印机,扫描仪 |
| 书柜 | 图书 |
| 书桌 | 台灯,文具 |
| 工作椅 | 无 |
输入的第 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大促销又来了!老板夫人开出了长长的购物单,都是有打 ...
随机推荐
- java网页日期选择框对应的星期有误
· 我用java写了个星期查询代码,有的日期对有的日期错,求帮忙看看哪里有问题!! import java.util.*;public class Test1 {public static void ...
- Oracle 12c 如何在 PDB 中添加 SCOTT 模式(数据泵方式)
Oracle 12c 建库后,没有 scott 模式,本篇使用数据泵方式,在12c版本之前数据库中 expdp 导出 scott 模式,并连接 12c 的 pdb 进行 impdp 导入. 目录 1. ...
- vue中封装jsonp
一.安装jsonp 二.封装
- bookdown学习笔记
主要参考大佬谢益辉的bookdown学习笔记 https://bookdown.org/yihui/bookdown/pandoc.html 灰常之详细 然后clone了他写好的小demo,准备自己试 ...
- linux中Jenkins启动/重启/停止命令
简要记录一下Linux 中Jenkins启动/重启/停止命令 启动service jenkins start1重启service jenkins restart1停止service jenkins s ...
- php7 安装redis拓展
配置之前应该是环境已经搭好了,phpinfo的页面可以加载出来. 使用git clone下载git上的phpredis扩展包 git clone https://github.com/phpre ...
- 【Python】圆周率的计算
1.公式法 代码: #CalPiV1.py pi=0 N=100 for k in range(N): pi+=1/pow(16,k)*(\ 4/(8*k+1)-2/(8*k+4)-\ 1/(8*k ...
- gulp安装报错Local version: Unknown
解决方法 使用国内的淘宝镜像安装: cnpm install -g gulp 一开始只执行了上面命令,没执行下面,gulp -v 之后显示Local version: Unknowncnpm inst ...
- [SUCTF 2019]EasySQL(堆叠注入配合sql_mode)
考点:1.堆叠注入 2.set sql_mode=PIPES_AS_CONCAT;将||视为字符串的连接操作符而非或运算符 意外:注入* 复现: 1;set sql_mode=PIPES_AS_CON ...
- AUI前端框架总结
AUI 是Apicloud 的手机端UI第三方,需要引入Apicloud和AUI中的css样式和js框架 **首先:手机项目必须配置config.xml文件 Apicloud官网有详解 ** 其次:程 ...