公主死去了,屠龙的少年还在燃烧|

TanAn

园龄:4年1个月粉丝:3关注:31

经典01背包问题(C++)--详解

二维数组解决01背包问题
题目:
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。

第 i 件物品的体积是 vi,价值是 wi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。

//01背包问题
//【二维数组】求解背包问题
//1.二维数组
#include <iostream>
#include <algorithm>//为调用max函数
using namespace std;
int n,v1;//n为物品数量,v1为背包大小
int f[1005][1005];//n件物品放到容量为v1的背包里的最优解
int v[1005];//物品体积数组
int w[1005];//物品价值数组
int main()
{
cin>>n>>v1;//输入物品数量,背包大小
for(int i=1;i<=n;i++){
cin>>v[i]>>w[i];
}
for(int i=1;i<=n;i++){//读取物品
for(int j=1;j<=v1;j++){//背包容量逐渐增加
if(j<v[i])//如果背包容量小于物品体积
//则第i件物品无法装进去。
//所以i的最优解与i-1件物品的最优解相同。
f[i][j]=f[i-1][j];
else
/*第i件物品可以装进去,则判断装与不装谁最优
因为对所有物品只有装与不装
1,不装:不装的话与上面相同,f[i][j]=f[i-1][j];
2,装;f[i][j]=f[i-1][j-v[i]+w[i];
f[i-1][j-v[i]]是在第i件物品之前的最优解,即i-1的最优解 ,
"-v[i]"是因为需要为第i件物品空出空间,"+w[i]"是把第i件物品选中;
*/
f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]+w[i]);
}
}
cout<<f[n][v1];
/*对应上边 "int f[1005][1005];//n件物品放到容量为v1的背包里的最优解 ",
f[n][v1]表示为"n件物品放到v1背包最优解"
*/
return 0;
}

本文作者:TanAn

本文链接:https://www.cnblogs.com/TanAn/p/16603083.html

版权声明:本作品采用本博客所有文章除特别声明外,均采用 @BY-NC-SA 许可协议。转载请注明出处!许可协议进行许可。

小贴士君:如果对本篇文章有问题或建议等,请在文章下方留言,博客园会及时通过邮箱通知到TanAn。

希望大家可以从文章中学到知识,也希望大家可以多多点点推荐,收藏,关注,这样就可以有更多的人看到啦。

posted @   TanAn  阅读(184)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示
我是TanAn,欢迎来到我的博客,博客建立之初,有幸遇见你
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 如愿 萧忆情Alex
  2. 2 白玫瑰 陈奕迅
  3. 3 星が降るユメ 蓝井艾露
星が降るユメ - 蓝井艾露
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

星が降るユメ - 藍井エイル (蓝井艾露)

词:Eir

曲:TAMATE BOX

编曲:TAMATE BOX/三谷秀甫

時が流れるたび

繰り返されていくのは

誰かの思い

僕の中の想い

出会って

また離れてく

眠り夢の中は

懐かしさで溢れて

隙間ひとつ

みつからないくらい

想い出重ねてきた

躓き転ぶことが怖くて

歩けなくなった時は

君のこと 思い出して

勇気に変えたい

そうして

ぼくは今日もまた生きていくよ

優しい過去と記憶を抱いて

選び続けた分かれ道だって

間違いなんてきっと無いはず

全てが繋がるストーリー

退屈な連鎖に

意味はひとつも無くて

心にある小さな隙間が

いつでも虚しかった

泥だらけのあの儚い君が

不器用にも生きていく

温もりにひとつひとつ

気付かされながら

そうして

君と今日もまた生きているよ

息をしてる意味を見つけて

笑い合えた時間の分だけ

悲しい影はそっと寄り添う

わかっていたつもりだったのに

何かを奪ってしまったら

大事なものが奪われる

気付くのが遅すぎた

星が消えてく

そうして

ぼくは今日もまだ生きていくよ

優しい君の記憶を抱いて

失くした分だけ拾い集めてく

海の向こう星が降る日に

全て託して

生きる事にしがみつくことを

誰も笑う事は

出来ないでしょう?

二人が過ごした日々がずっと

悲しい過去にならないように

星が降る夜のストーリー