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

时间:2016-05-19 15:19:36

标签: arrays string algorithm while-loop nested-loops

我无法围绕算法进行以下操作:

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

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

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

依旧......

感谢您的建议!

1 个答案:

答案 0 :(得分:0)

您可以使用递归尝试:

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)

基本思想是以空字符串开头,然后在每次执行中,为数组中的每个字符递归调用。这将为先前为每个字符串生成一个新字符串,该字符串用于结尾处连接的数组中的每个字符。

当您达到所需的长度时,请“访问”生成的组合。

例如,对于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