我正在尋找「排列」算法的快速實現(帶有重複項的排列)。 給定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