请教如何实现M个字符的N次方组合算法,谢谢!
假设M个字符为:abc
组合的长度为:3
则生成的个数为:3的3次方 = 27个组合 (M字符的长度的组合长度次方,即 3*3*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
[解决办法]
有限长度,用循环:
s = "abc"
for i = 1 to 3
for j = 1 to 3
for k = 1 to 3
debug.print mid(s, i, 1) & mid(s, j, 1) & mid(s, k, 1)
next
next
next
任意长度用递归:
n个长度的字符串集合可以表述为n-1个长度的字符串集合,每个项都用元字符匹配一次
直到n = 1。