【发布时间】:2010-09-30 00:29:30
【问题描述】:
我正在寻找“排列”算法(重复排列)的快速实现。
给定 N 个对象(数量 a 中的 A,数量 b 中的 B,...),生成所有可能的组合。
示例:
Arrangement("AAA", "B", "CC") would return :
"AAABCC" "AABACC" "AABCAC" "AABCCA" "ABAACC" "ABACAC" "ABACCA" "ABCAAC"
"ABCACA" "ABCCAA" "BAAACC" "BAACAC" "BAACCA" "BACAAC" "BACACA" "BACCAA"
"BCAAAC" "BCAACA" "BCACAA" "BCCAAA" "AAACBC" "AACABC" "AACBAC" "AACBCA"
"ACAABC" "ACABAC" "ACABCA" "ACBAAC" "ACBACA" "ACBCAA" "CAAABC" "CAABAC"
"CAABCA" "CABAAC" "CABACA" "CABCAA" "CBAAAC" "CBAACA" "CBACAA" "CBCAAA"
"AAACCB" "AACACB" "AACCAB" "AACCBA" "ACAACB" "ACACAB" "ACACBA" "ACCAAB"
"ACCABA" "ACCBAA" "CAAACB" "CAACAB" "CAACBA" "CACAAB" "CACABA" "CACBAA"
"CCAAAB" "CCAABA" "CCABAA" "CCBAAA"
(如果可能,使用 C、C# 或 Pascal 编写代码)
提前致谢
菲利普
【问题讨论】:
-
Permutations of a given set of numbers 的可能重复项 - 还有其他几个相关问题
-
当所有对象都不同时,此功能有效。
标签: algorithm math combinatorics