

- #include
- using namespace std;
- int bag[1001];
- int bagMax[1001];
- int bagvalue[1001];
- int main(){
- int n,v;
- cin>>n>>v;
- for(int i=0;i
- cin>>bag[i]>>bagvalue[i];
- }
- for(int j=0;j
- //为啥要将物品遍历放到外面因为如果放到里面的话就会重复放入背包
- //但是本题的每一个物品只有一个
- //并且如果遍历背包是顺序的方式的话也会重复,举个例子
- //物体一的价值为100 但是重量只有1当遍历重量为2的时候我们第一次背包大小为1的时候已经放入了。
- //但是此时还是会继续放入物品一,大小够。
- //所以反过来就不会。从最大的开始遍历的话,物品在背包最大时不会重复放入
- //具体的看下图
- for(int i=v;i>=1;i--){
- if(bag[j]<=i){
- bagMax[i] = max(bagMax[i],bagMax[i-bag[j]]+bagvalue[j]);
- }
- }
- }
-
-
相关阅读:
Ubuntu下C/C++开发小结
Go和JavaScript结合使用:抓取网页中的图像链接
【精通Java】集合类体系之Collection
Windows Powershell命令一条命令安装Python
算法面试高频题解指南【一】
c# List vs SortedList vs LinkedList
嵌入式系统开发笔记101:STM32CubeIDE安装过程中的2个错误及其解决方法
最新全国省市区县乡镇街道行政区划数据提取(2022年)
Spring是如何解决循环依赖问题的及三级缓存的作用
Linux 是如何进行内存分配的
-
原文地址:https://blog.csdn.net/qq_62556650/article/details/132921574