

- #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]);
- }
- }
- }
-
-
相关阅读:
ChatGLM-6B-Int4运行有误
c++多线程学习11 packaged_task异步调用函数打包
GitHub Proxy 快速下载github文件
Android开发中Button背景颜色不能修改问题及解决方法
概率论和数理统计(四)方差分析与回归分析
子网掩码计算方法
AI&Cloud 分论坛 07-AI原生数据库与RAG【文档管理】
浅谈Linux PMIC驱动(一)
vue实现带有横向和纵向双表头
Java EE 用户删除和修改功能
-
原文地址:https://blog.csdn.net/qq_62556650/article/details/132921574