永发信息网

C++背包问题.

答案:3  悬赏:20  手机版
解决时间 2021-11-16 09:31
C++背包问题.
最佳答案
//动态规划解礼物分配问题
#include
#include
#define N 11
#define M 51
int main()
{
int i,j,n,m,sum=0,v[N],c[N][M];
cout<<"输入礼物个数:";
cin>>n;
v[0]=0;
cout<<"输入礼物价值\n";
for(i=1;i<=n;i++){
cin>>v[i];
sum=sum+v[i];
}
m=sum/2;
for (i=0;i<=n;i++)//初始化
for (j=0;j<=m;j++)
c[i][j]=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (v[i]<=j){
if (v[i]+c[i-1][j-v[i]]>c[i-1][j])
c[i][j]=v[i]+c[i-1][j-v[i]];//选择第i物品
else
c[i][j]=c[i-1][j];//不选择第i个物品
}
else
c[i][j]=c[i-1][j];//剩余容量不够

int temp=m;
int x[N]={0,0,0,0,0,0,0,0,0,0,0};
for (i=n;i>0;i--)
if (c[i][temp]==c[i-1][temp])//最后一个肯定是最大价值的
x[i]=0;
else
{
x[i]=1;
temp-=v[i];
}
cout<<"\nBob的礼物\t礼物序号: ";
for (i=0;i<=n;i++)
if (x[i])
cout< cout<<"\n\t\t总价值:"< cout<<"\nAlen的礼物\t礼物序号: ";
for(i=0;i<=n;i++)
if(!x[i] && i)
cout< cout<<"\n\t\t总价值:"< getch();
return 0;
}

要详细的文档请留邮箱
全部回答
不懂你在说什么、
你指的是普通背包问题(物品可以拆卸)还是0/1背包问题啊?
如果是普通背包问题的话,遵循单价最优原则就好了。
如果是0/1背包问题采取动态规划。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我在健身房锻炼一个多月,一个礼拜去3-4次。
没办工商执照,工商行政扣压了商品,但罚款过
《高考数学你真的掌握了吗》做完之后,高考能
应城市孝感欧派木门应城店在什么地方啊,我要
莎蔓莉莎美容会所(莘庄店)地址有知道的么?有
3mmm平台是骗人的吗?
形容江河水流迅速,也形容文笔奔放,流畅的成语
从怀柔去红螺寺怎么乘车
本人想去抓蛇、我这边很多蛇洞 ,可是我不知
为什么有的人喜欢忽悠人
我们爱和平小报字100
E BOAEL.Co 瑞士手表是什么牌子
1993年7月份,到底几岁不要说虚岁
怎么挑个好苹果?
wind的过去式是什么?
推荐资讯
114网退机票短息内容是什么?会写退多少钱吗
不知道算不算高危今天和一个很熟悉的人母去开
请问夜上翁是哪个朝代的人
有人知道莫小在吗?怎么样呢?
甘肃宁县农村合作银行(春荣支行)地址有知道的
2018考研金融专硕热点论述题怎么答
宁做穴中蚁,不为林间风是什么意思?
[50分]辩论:你是否同意"背脊向天人所食",除了
庞贝古城与庞培有什么关系?
恩施金麟府怎么样?好不好?值不值得买?
低危hpv81阳性转成hpv81十是什么意思
君行健,全文及释义
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?