#include<iostream>
using namespace std;
#define N 5
int C;//背包体积
int W;//背包最大重量
#define max 100
int w[6] = {0, 2 , 3 , 4 , 5 ,7}; //商品的重量
int v[6] = { 0, 3 , 4 , 5 , 6 ,10}; //商品的价值
int c[6] = { 0,1,2,3,4,5, };//商品的体积
int m[max][max][max];//数目,重量,体积
int t[max][max][max];
int x[max];
void knapsack()
{
int i, j,k;
for (j = 1; j <= W; j++) {
for (k = 1; k <= C; k++) {
if (w[1] <= j && c[1] <= k)
{
m[1][j][k] = v[1];
t[1][j][k] = 1;
}
else
{
m[1][j][k] = 0;
t[1][j][k] = 0;
}
}
}
for (i = 1; i <= N; i++)
for (k = 1; k <= C; k++)
m[i][0][k] = 0;
for (i = 1; i <= N; i++)
for (j = 1; j <= W; j++)
m[i][j][0] = 0;
for (i = 1; i <=N; i++) {
for (j = 1; j <= W; j++) {
for (k = 1;k <= C; k++) {
if (w[i] <= j && c[i] <= k)
{
if (m[i - 1][j][k] < m[i - 1][j - w[i]][k - c[i]] + v[i])
{
m[i][j][k] = m[i - 1][j - w[i]][k - c[i]] + v[i];
t[i][j][k] = i;
}
else
{
m[i][j][k] = m[i - 1][j][k];
t[i][j][k] = t[i - 1][j][k];
}
}
else
{
m[i][j][k] = m[i - 1][j][k];
t[i][j][k] = t[i][j][k] = t[i - 1][j][k];
}
}
}
}
}
void output()
{
int y = W;
int j = N;
int f = C;
while (y > 0&&f>0) {
j = t[j][y][f];
x[j] = 1;
y = y - w[j];
f = f - c[j];
}
int a;
int number = 0;//最大价值
for (int i = 1; i <= N; i++) {
a = x[i] * v[i];
number = number + a;
}
cout << "使用硬币最大价值为:" << number << endl;
cout << "硬币的重量:{";
for (int i = 1; i <= N; i++)
{
cout << w[i] << " ";
}
cout << "}" << endl;
cout << "硬币的价值:{";
for (int i = 1; i <= N; i++)
{
cout << v[i] << " ";
}
cout << "}" << endl;
cout << "硬币的体积:{";
for (int i = 1; i <= N; i++)
{
cout << c[i] << " ";
}
cout << "}" << endl;
cout << "最佳装入方案:{";
for (int i = 1; i <= N; i++) {
cout << x[i];
if (i != N) {
cout << ",";
}
}
cout << "}" << endl;
}
int main()
{
cout << "背包体积:";
cin >> C;
cout << endl;
cout << "背包最大承重:";
cin >> W;
cout << endl;
knapsack();
output();
system("pause");
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
背包问题推广c++.zip
共28个文件
tlog:7个
log:2个
pdb:2个
需积分: 2 3 下载量 31 浏览量
2019-05-28
19:45:12
上传
评论 1
收藏 12.27MB ZIP 举报
温馨提示
算法分析课程实验,0-1背包问题的推广,背包有体积和限制重量,双重限制输入背包的最大体积和最大重量,输出最获得最大价值的最佳方案。
资源推荐
资源详情
资源评论
收起资源包目录
背包问题推广.zip (28个子文件)
1191170314背包徐嘉璐
.vs
Project1
v15
ipch
AutoPCH
607d304a916eab6
源.ipch 28.25MB
36312ccbd074124e
源.ipch 28.25MB
.suo 20KB
Browse.VC.db 4.86MB
Project1.sln 1KB
Debug
Project1.exe 54KB
Project1.exe.lastcodeanalysissucceeded 0B
Project1.ilk 511KB
Project1.pdb 652KB
Project1
Project1.vcxproj 6KB
Debug
NativeCodeAnalysis.read.1.tlog 138B
源.obj 55KB
vc.nativecodeanalysis.all.xml 52B
Project1.tlog
link.read.1.tlog 3KB
link.command.1.tlog 1KB
CL.command.1.tlog 654B
CL.write.1.tlog 512B
CL.read.1.tlog 18KB
link.write.1.tlog 496B
Project1.lastbuildstate 264B
vc141.pdb 364KB
Project1.log 145B
vc141.idb 155KB
源.nativecodeanalysis.xml 59B
Project1.Build.CppClean.log 2KB
Project1.vcxproj.filters 948B
Project1.vcxproj.user 165B
源.cpp 2KB
共 28 条
- 1
资源评论
四号少年
- 粉丝: 327
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功