gmwu和其他高手 !还是排列组合问题。200分!(200分)

X

xihahi

Unregistered / Unconfirmed
GUEST, unregistred user!
gmwu已经回答了 benbenma的组合问题,我还有一个:
有4组熟,每组有7个整数,共28个,这28个中没有相同的数。现在要求:
从28个数中取8个,且这8个中位于原来每组中的数都不超过3个。最好给出一个象gmwu那样的
答案。
 
我回头研究
 
第一种情况:一个取0,一个取2,一个取3,一个取3,于是C41*C31*C70*C72*C73*C73;
第二种情况:一个取1,一个取1,两个取3,一个取3,于是C42*C71*C71*C73*C73;
第三种情况:一个取2,一个取2,两个取2,一个取2,于是C72*C72*C72*C72;
第四种情况:一个取1,一个取2,两个取2,一个取3,于是C41*C31*C71*C72*C72*C73;
把上面四种情况加起来就可以了。
 
同意楼上的!
 
不知道你是要取数,还是要得到排列组合的答案??
如果只为了取数,那么:
在28个里面随便取8个
然后如果任何一组里面超过3个的,重来就可以了.
如果是为了得到排列组合的答案,用纸和笔就可以了...
 
当然是要编程解决啦!
如果是单纯的数学问题,谁不会啊?
 
我觉得问题很简单,首先从每组中取三个数,得到12个数,再从12个数中取8个即可。
共有算法:4C(7,3)*C(12,8)。顺便说一下,上面那种穷尽方法是行不通的,编
程如果是这样的话,要多少代码??[:D][:(!]编程讲究思路!
 
先从28个里取一个,再从剩下的27个里取,每次取完后如果某一组够3个,就把这组都去掉
 
to honestman:
我觉得如果编程实现就应该有一定的普遍性,比如说28可以换成别的数,然后4组也可以
变成3,或者5,我又没有说你不会这个数学问题......


 
这问题我已经用一种比较笨的办法解决:
先求出N个数中取M的组合(大家在论坛中查询‘组合’可以找到求解办法),然后用排除
法将不符合要求的逐个删除。
问题当然要用计算机实现,不光要算出组合的个数,还要知道所有组合中数字的组成,
我这样做只适用了N比较小的,如果N太大了话,呵呵,可能要用超级计算机才能算出来了
见者有分
 

Similar threads

回复
0
查看
862
不得闲
S
回复
0
查看
956
SUNSTONE的Delphi笔记
S
S
回复
0
查看
778
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部