| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1057 人关注过本帖
标题:[求助]数据结构问题
只看楼主 加入收藏
刘香
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-9-21
收藏
 问题点数:0 回复次数:7 
[求助]数据结构问题
假设有一个能装入总体积为T的背包和N件体积分别为w1,w2,w3....wn的物品,能否从n件物品中挑选若干件恰好装满背包,使得w1+w2+....wn=T

要求找出所所有满足上述条件的解,例如:当T=10,各件物品的体积<1,8,4,3,5,2>时,可找到下列解:1,4,3,2,;1,4,5;8,2;3,5,2。


帮帮忙啊
谢谢啦
搜索更多相关主题的帖子: 数据结构 物品 体积 背包 
2007-04-29 12:57
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
经典的背包问题.

倚天照海花无数,流水高山心自知。
2007-04-29 13:24
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 
用循环  应该是的

   好好活着,因为我们会死很久!!!
2007-04-29 13:59
刘香
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-9-21
收藏
得分:0 
该怎么做呢

2007-04-29 16:25
刘香
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-9-21
收藏
得分:0 

背包问题的求解
假设有一个能装入总体积为T的背包和n件体积分别为w1,w2,。。。。。wn的物品,能否从n件物品中挑选若干
件恰好装满背包,使得w1+w2+....+wn=T,要求找出所有满足上述条件的解。例如;当T=10,各件物品的体积
{1,8,4,3,5,2}时,可找到下列4组解(1,4,3,2)(1,4,5)(8,2)(3,5,2)。

提示:可利用回溯法的设计思想来解决背包问题。首先将物品排成一列,然后顺序选取物品装入背包,假设已选取
了前i件物品之后背包还没有装满,则续选取第i+1件物品,若该件物品"太大"不能装入,则弃之而继续选取下一件
,直到背包装满为止。但如果在剩余的物品中找不到合适的物品以添满背包,则说明"刚刚"装入 背包的那件
物品"不合适",应将它取出"弃之一边"继续再从"它之后"的物品中选取,如此重复,直至求得满足条件的
解,或者无解。

2007-04-29 20:06
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
void backtrack(int i)
{
if(i>n)
{
if(cw==num)//cw,代表当前值,num代表背包容量
{
for(int i=0;i<n;i++)
{
if(x[i]==1)//x[]代表解向量
{
printf("%-3d",w[i]);
}
}
printf("\n");
}
retrun 0;
}
if(cw+w[i]<num)//第i可以加入
{
x[i]=1;
cw+=w[i];
Backtrack(i+1);
cw-=w[i];
x[i]=0;
}//第i个不能加入.
Backtrack(i+1);
}

倚天照海花无数,流水高山心自知。
2007-04-29 20:14
fengzar
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-10-27
收藏
得分:0 

动态规划

2007-04-30 14:53
刘香
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-9-21
收藏
得分:0 
解决
谢谢

2007-05-12 16:39
快速回复:[求助]数据结构问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017327 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved