出一道题 : 计算 一个 组合

从  ABCDEFG    7 个 字母 中 每次 取 5 个 字母 作为 组合,  允许 相同 的 字母 重复 出现,  问 有 多少种 组合 ?    可以的话,   列出 这些 组合  。

 

允许相同 的 字母 重复出现,   比如  AABBC 、ABABC 、CCCCD 、DFGGG   ,    注意,  因为 组合 不区分 元素顺序,   AABBC 和 ABABC  是 同一个 组合  。

 

这题 出自  《排列组合》  https://www.cnblogs.com/KSongKing/p/13193086.html    。

 

 

本文 已 发到了 反相吧  《出一道题 : 计算 一个 组合》    https://tieba.baidu.com/p/6935299100   ,  下面 记录 帖 里 的 一些 讨论回复  。

 

 

11 楼

incinc :

还可以相同的字母出现,这就不是题目中的“7 个 字母 中 每次 取 5 个 字母 作为 组合”的问题了,而应该是另一个种组合问题了。

 

题面出得有问题,因为组合问题的前提已经定义为7个ABCDEFG字母,而这7个字母不可能再成为可以重复的字母出现了。

 

 

12 楼

incinc :

如果“7个字母中可以重复”,则是每一个字母可以出现7次,相对于7*7=49个元素了,

而从这49个元素进行“每次取5个字母作为组合”,则: C(49,5)=49!/5!*(49-5)!

 

incinc: 吓住了,共有1,906,884。

 

 

13 楼

ylyyjjlh2 :

我编了个程序,把所有组合都列出来,楼主你看一下,有遗漏或重复吗?

 

 

 

 

 

 

 

 

 

 

 

15 楼

回复 11 楼 12 楼     incinc

 

inc 吧主 的 思路 很有 启发 , 我改了一下, 7 * 5 = 35,

 

从 35 个 元素 中 取 5 个 作为 组合, 这样得到的 组合 个数 是不是 1 楼 题目 的 答案 ?

 

还是 有问题, 这样 还是 会 把 一部分 组合 重复 算进去 。

 

 

 

16 楼

回复 13 楼    ylyyjjlh2 ,

 

层主 的 算法 看起来 是 对 的 , 比如 从 AAAAA , AAAA , AAA, AA, A 开始 循环组合,

 

有 AAABB, 但是 到 BB 的 时候 , 就没有 A, 而是 从 BBCCC 开始,

 

以 A 循环 的 时候, 用 B 和 之后 的 字母 参与 匹配,

以 B 循环 的 时候, 用 C 和 之后 的 字母 参与 匹配,

以 C 循环 的 时候, 用 D 和 之后 的 字母 参与 匹配,

……

 

而 用 字母 匹配 的 过程, 又 使用 上述 的 过程, 如此 递归 。

 

这个 算法 应该 是 对的 。

 

这个 算法 的 特色 是 递归, 但 也因为此, 要把 这个 算法 写成 公式 比较 困难 。

 

另外, 你 递归 次数 太多, 堆栈 没有 溢出 吗 ?

 

 

 

17 楼

接 16 楼      ylyyjjlh2 ,

 

这个 题 可以 用 纯 循环 程序 实现, 也可以写出 对应 的 公式, 这个 循环算法 有一部分 也 参考了 你的 递归算法 。

 

你的 结果 是 462, 递归次数 估计 在 1 万次 左右 。

 

受 你的 这个 递归程序 启发 挺多 的 , 哈哈哈 。

 

原文地址:https://www.cnblogs.com/KSongKing/p/13633138.html