我无法围绕算法进行以下操作:
我有一个包含所有可能字符的数组:array("a", "b", "c",...."z", " ", "!"...)
你明白了。
现在我想用x的长度生成这些字符的所有可能的组合。
所以例如长度为4的array("a", "b", "c")
:aaaa abaa acaa aaba aaca aaab aaac abba abca acba acca(....)baaa caaa
依旧......
感谢您的建议!
答案 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