问一道非常白痴的算法问题,我一时间脑子不转了

2016-10-18 23:25:20 +08:00
 allencpp
譬如 A,B 两个字母,可以重复出现 N 次,有多少排列组合的结果?
譬如 N=1 重复出现一次,那就是 AB 和 BA 2 种
N=2 重复出现两次,那就是 AABB,BBAA,ABAB,BABA,ABBA,BAAB 6 种(如果我没算错)
N=3 以此类推 AAABBB , BBBAAA 。。。。。

求这种行为的 N 的算法
1272 次点击
所在节点    问与答
3 条回复
neosfung
2016-10-19 10:30:54 +08:00
很简单的问题
假设现在有 2N 个空洞,让你随机挑 N 个空洞放球,求问多少种组合。
那就是 C(2N,N)
allencpp
2016-10-19 14:54:36 +08:00
@neosfung 如果要把组合全部罗列出来,如何实现呢。。。?
SoloCompany
2016-10-20 00:46:28 +08:00
@allencpp 排列组合是概率论最基本的概念了吧
C(N,M) (N>M) 求 M 个无序的球放在长度为 N 的位置上的可能数量
第 1 个球有 N - M 种可能的位置
针对这 N - M 中可能位置
在放好第 1 个球后(假设位置为 i ),第 2 个球就只剩下 N - M - i 个可选位置
以上其实就是个数学归纳法,也就是说可以递归实现

程序完全可以遵循上面的过程进行模拟
遍历完所有 C(N,M) = N!/M!(N-M)! 种可能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/313712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX