我正在寻找“排列”算法的快速实现(带有重复项的排列)。 给定N个对象(A的数量为a,B的数量为b,...),生成所有可能的组合。
例:n个对象的排列(带有重复项的排列)
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如果可能的话)
感谢
菲利普
[给定数字集合的排列]可能的重复(http://stackoverflow.com/questions/1653500/permutations-of-a-given-set-of-numbers) - 还有其他几个相关的问题 – 2010-09-29 16:13:45
当所有对象不同时,此函数可用。 – PhilippeC 2010-09-29 16:27:58