用 x 个字符创建所有可能的字符串的算法

Algorithm for creating all possible strings with x characters

我无法理解用于制作以下内容的算法:

我有一个包含所有可能字符的数组:array("a", "b", "c",...."z", " ", "!"...)你明白了。

现在我想生成这些字符的所有可能组合,长度为 x。

例如 array("a", "b", "c") 长度为 4:aaaa abaa acaa aaba aaca aaab aaac abba abca acba acca (....) baaa caaa

等等...

多谢指教!

你可以用递归试试:

COMBINATIONS(array, length):
    COMBINATIONS("", array, length)

COMBINATIONS(string, array, length):
    IF length == 0
        VISIT(string)
    ELSE
        FOR EACH c IN array
            COMBINATIONS(string + c, array, length - 1)

基本思路是从一个空字符串开始,然后在每次执行时,对数组中的每个字符递归调用。这将为之前为每个字符串生成一个新字符串,为最后连接的数组中的每个字符生成一个新字符串。

当您达到所需的长度时,然后 'visit' 生成的组合。

例如,对于 array = ['a', 'b', 'c']length = 3

aaa
aab
aac
aba
abb
abc
aca
acb
acc
baa
bab
bac
bba
bbb
bbc
bca
bcb
bcc
caa
cab
cac
cba
cbb
cbc
cca
ccb
ccc