A**l 发帖数: 2650 | 1 n个相同的球分成m堆,有几种分法,每堆球至少一个
问题等价于(n-m)个球分成k堆,k<=m,每堆可以为零个球
注意球是相同的,堆也没有区别,比如4个球分2堆,只有两种分法:
1, 3
2, 2
平时见到的都是球不同或者堆不同,可以套P(n, m) 或者C(n,m)
这个更像是求集合的特定子集的问题 | G**********s 发帖数: 70 | 2 回溯+剪枝
当n<=2m,此题等价于经典的 子集和问题。
当n>2m, 也只要剪掉k>m的所有子集咯,
【在 A**l 的大作中提到】 : n个相同的球分成m堆,有几种分法,每堆球至少一个 : 问题等价于(n-m)个球分成k堆,k<=m,每堆可以为零个球 : 注意球是相同的,堆也没有区别,比如4个球分2堆,只有两种分法: : 1, 3 : 2, 2 : 平时见到的都是球不同或者堆不同,可以套P(n, m) 或者C(n,m) : 这个更像是求集合的特定子集的问题
| y*****i 发帖数: 727 | 3 采用递归:考虑对所有的堆进行排序,按照个数从小到大,很容易列出递归式。 | h**6 发帖数: 4160 | | p*****2 发帖数: 21240 | 5
同意han6
【在 h**6 的大作中提到】 : dp也可以的。
|
|