组合问题算法求解

a0002 2003-08-24 02:30:38
已知m个数是n=k*m(2<=k<=6)个数的一个子集,现将n个数平均分成m组,成为n的一个划分。
问:需要多少种划分,才能保证至少有一种划分满足那m个数正好分在m个组?

新来的,放分很少,请高手赐教!

...全文
50 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
a0002 2003-08-29
  • 打赏
  • 举报
回复

没有高人吗?

a0002 2003-08-24
  • 打赏
  • 举报
回复

求满足条件的最小值,并给出划分!


a0002 2003-08-24
  • 打赏
  • 举报
回复

还有问题的,B不对,当n=12,m=6,k=2时,B=B/m!=1,显然不对!


mmmcd 2003-08-24
  • 打赏
  • 举报
回复
设:n=k*m,C(n,m)=n!/m!/(n-m)!

n个数分m组,每组k个数,共
A=C(n,k)*C(n-k,k)*C(n-2*k,k)*...*C(n-(m-1)*k,k)种划分

m个数在不同的m组,每组已分一个数,再定k-1个数,共
B=C(n-m,k-1)*C(n-m-(k-1),k-1)*C(n-m-2*(k-1),k-1)*...*C(n-m-(m-1)*(k-1),k-1)种划分

不满足要求的划分有A-B种。

当构造了A-B+1种划分,至少有一个满足要求。
mmmcd 2003-08-24
  • 打赏
  • 举报
回复
设:n=k*m,C(n,m)=n!/m!/(n-m)!

n个数分m组,每组k个数,共
A=C(n,k)*C(n-k,k)*C(n-2*k,k)*...*C(n-(m-1)*k,k)种划分

m个数在不同的m组,每组已分一个数,再定k-1个数,共
B=C(n-m,k-1)*C(n-m-(k-1),k-1)*C(n-m-2*(k-1),k-1)*...*C(n-m-(m-1)*(k-1),k-1)种划分

不满足要求的划分有A-B种。

当构造了A-B+1种划分,至少有一个满足要求。
mmmcd 2003-08-24
  • 打赏
  • 举报
回复
去掉重复:A=A/m!,B=B/m!
a0002 2003-08-24
  • 打赏
  • 举报
回复

而且,你这种思路,只是对上界的估计,给出的是最多需要A-B+1种划分,这个值太大,对实际问题几乎没有价值的!

我需要求下界,最少需要多少种划分!




这应该是一个优化问题,哪位能给出一个算法?
a0002 2003-08-24
  • 打赏
  • 举报
回复

mmmcd(超超),你的方法没有考虑到重复的划分,你在A的构造中,肯定会有重复的。因为划分也是组合,而不是排列。

a0002 2003-08-24
  • 打赏
  • 举报
回复

举个简单的例子,1-12共12个数,2个一组,分成6组,已知6个数是12个数的子集(但是具体是哪6个数不知道),需要最少多少种划分,才能保证至少一种划分满足:6个数正好分在6个组?

比如:{1,7},{2,8},{3,9},{4,10},{5,11},{6,12}是一个划分。


33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧