背包问题动态规划详解及C代码.doc

背包问题动态规划详解及C代码.doc

ID:55482661

大小:15.50 KB

页数:3页

时间:2020-05-14

背包问题动态规划详解及C代码.doc_第1页
背包问题动态规划详解及C代码.doc_第2页
背包问题动态规划详解及C代码.doc_第3页
资源描述:

《背包问题动态规划详解及C代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、0/1背包问题动态规划详解及C++代码1.问题描述给定一个载重量为C的背包有n个物品其重量为wi价值为vi1<=i<=n要求:把物品装入背包并使包内物品价值最大2.问题分析在0/1背包问题中物体或者被装入背包或者不被装入背包只有两种选择。循环变量ij意义前i个物品能够装入载重量为j的背包中数组c意义c[i][j]表示前i个物品能装入载重量为j的背包中物品的最大价值若w[i]>j第i个物品不装入背包否则若w[i]<=j且第i个物品装入背包后的价值>c[i-1][j]则记录当前最大价值替换为第i个物品装入背包后的价值其c++代码如下#include<

2、iostream>usingnamespacestd;voidKANPSACK_DP(intc[50][50],intw[50],intv[50],intn,intC){for(inti=0;i<=C;i++){c[0][i]=0;}for(inti=1;i<=n;i++){c[i][0]=0;for(intj=1;j<=C;j++){if(w[i]<=j){if(v[i]+c[i-1][j-w[i]]>c[i-1][j])c[i][j]=v[i]+c[i-1][j-w[i]];elsec[i][j]=c[i-1][j];}elsec[i][j]=c[i-1][j];}}}voi

3、dOUTPUT_SACK(intc[50][50],intx[50],intw[50],intn,intC){for(intk=n;k>=2;k--){if(c[k][C]==c[k-1][C])x[k]=0;else{x[k]=1;C=C-w[k];}}x[1]=c[1][C]?1:0;}intmain(){intc[50][50];intw[50],v[50];intx[50];intC,n;cout<<"输入物品的总个数";cin>>n;cout<<"输入背包的总容量";cin>>C;cout<<"依次输入物品的重量"<

4、+){cin>>w[i];}cout<<"依次输入物品的价值"<>v[i];}KANPSACK_DP(c,w,v,n,C);OUTPUT_SACK(c,x,w,n,C);cout<<"最优解为"<

5、品的价值63546最优解为11001最大容量为15请按任意键继续...

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。