用 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
我无法理解用于制作以下内容的算法:
我有一个包含所有可能字符的数组: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