作者xcode (Xcode)
站内Programming
标题Re: [问题] 排列组合,相同物品分发制不同容器
时间Sun Apr 15 02:37:27 2012
※ 引述《yauhh (哟)》之铭言:
: ※ 引述《lovesnake (【忠犬攻一枚】)》之铭言:
: : 求标题之演算法
: : 其实就是分堆啦
: : 假设有五个东西,分成三堆有几种分法这样
: : 1 1 3
: : 1 2 2
: : 2 1 2
: : 2 2 1
: : 1 3 1
: : 3 1 1
: : 没有按照顺序,不过需要列印出来的大概像这样。
: : 因为是分到不同容器所以会有差别,所以内部是个SET而不是序列。相同的不能删。
: : 谢谢!!
: : 已经想过很多方法,不过最终只做到东西的数量<堆数*2的时候才能成功。
: : 大於的演算法始终想不出来。
: 看最後一句,猜你的方法有一点特殊性或限制,所以数量少於堆数的二倍才会成功.
: 假设有八个东西要分三堆,你会先整理出
: 1 1 6
: 1 2 5
: 1 3 4
: ......
: 这意思是说, 1 1 6 的情况,你要先随便取一个,然後随便取一个,然後剩下六个放到
: 第三堆,这样是一些组合. 1 2 5 的情况要做另一些组合. 然後 1 3 4 的情况再做
: 另一些组合. 其他也一样.
: 这样应该不会当东西数目超过堆数的二倍时无法分堆了.
这个问题从容器来想比较简单,M个容器,放入总数恰等於N的值
从大到小,追踪剩余未分配数量。
如果每个容器要求至少一个,就先N-M个,再做分配。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.126.15.80
1F:推 lovesnake:恩窝~ 我是这样想的 140.121.216.68 04/15 14:13