从数组中获取所有可能的字符串组合到特定长度的算法 [英] Algorithm to get all possible string combinations from array up to certain length

查看:56
本文介绍了从数组中获取所有可能的字符串组合到特定长度的算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从给定数组中以最小 & 获取所有可能的字符串组合的最佳算法是什么?最大长度值.

注意:这增加了复杂性,因为与这些链接到的问题不同,该值是可变的.

例如:

$letters = array('a','b','c','1','2','3');$min_length = 1;$max_length = 4;一种乙C123...啊啊啊a123b123c123

解决方案

几乎是基本转换

这个解决方案的动机是观察到,如果不是在有效组合的高位位置重复数组索引 0 处的字符的可能性,这个问题将只是从十进制到从 0 到 (base^length)-1 的所有整数的新基数.所以,

0 = a1 = 乙...1294 = 33321295 = 3333

困难在于这会遗漏一个或多个前导a"的组合,例如:

aa...a1aa1aaa1

这些是唯一缺少的解决方案.因此,可以简单地,对于每个生成的长度小于 max_length 的组合,在字符串的前面添加 'a'(或字母 [0] 处的任何内容),然后输出 那个 字符串,如果必要的.因此,如果您生成字符串 'b',您将输出:

bABaabaaab

这行得通,但并不令人满意,首先是因为它看起来像是一个杂乱无章的解决方案.其次,它不会按字典顺序生成解决方案,这可能是也可能不是问题.第三,如果生成组合的函数是双射的,这样我们就知道由任何给定十进制整数产生的唯一组合和任何组合的唯一索引,那就太好了.这将是关键.

想象一下没有零

如果零索引给我们带来了问题,那为什么不取消它呢?假设我们将数组更改为:

字母 = {∅,'a','b','c','1','2','3'}

其中 ∅ 是一个永远不会使用的任意占位符.我们现在将尝试在不使用数字零的情况下,在新的基数(在这种情况下仍然是 6,而不是 7)中表示从 1 到 base^max_length 的十进制整数.我们将把从 1 到基数 1 的数字表示为正常的 (1, 2, 3, ...) 但是当我们得到等于基数的数字时,而不是将其表示为 10,我们将其表示为基数(例如,6 而不是基数 6 中的 10).下一个数字 base+1 将是 11,然后是 12 到 16(等于十进制 12),然后到 21.每个数字

an,an-1,...,a1,a0

在新基数上等于

an*bn+an-1*bn-1+...+a1*b1+a0*b0

十进制,其中 b 是新的基数.

据我所知,这被恰当地称为双射计数.举个例子,在基数 6 中,我们将有:

Base 10 Base 61 12 2...6 67 118 12...11 1512 1613 21...36 56

从上面的维基百科链接,新基数中数字的第一个数字"是:

a0 = m - q0k

其中 k 是新的基数,m 是要转换的整数,q0 = 天花板(m/k)-1.请注意与正常基数转换的相似性,其中唯一的区别是 q0 将是 floor(m/k) 或普通整数除法.后续的数字"的计算方法类似,使用 q0 而不是 m 来查找 1

这个公式可以分为两种情况:

  • (m mod k) == 0: a0 = k and q0 = (m div k) - 1
  • (m mod k) != 0: a0 = (m mod k) 和 q0 = (m div k)

这是算法的核心.对于任何整数 m,我们可以迭代地应用这个公式,直到结果 qp == 0.还要注意,转换自然是可逆的.给定一个以 6 为底的数字 6666,十进制值为:

(6*6^3)+(6*6^2)+(6*6^1)+(6*6^0)=1554

我们使用这个事实来找到要转换的整数范围,以获得特定长度的所有组合.抱歉,我的 PHP 技能不存在.希望Java代码足够清楚.鉴于:

 char [] 字母 = new char [] {'0','a','b','c','1','2','3'};int max_length = 4;

我们有函数:

 int b = 字母长度 - 1;//要转换的基数整数 n = 0;for (int k = 0; k  0);System.out.println(组合);}

其中/代表整数除法,或 floor(a/b).

该函数仅依赖于输入的整数,而不依赖于先前的计算结果,因此并行处理的可能性非常大.

这是上面输入的输出.根据您的示例,最低有效数字在前.

a乙C123aa巴钙1a2a3aABbbCB1b2b3b交流电公元前抄送1c2c3ca1乙1c1112131a2b2c2122232a3b3c3132333啊啊啊咩caa1aa2aa3aa阿坝巴巴工商管理硕士1ba2ba3ba阿卡支链氨基酸共济会1ca2ca3caa1ab1ac1a11a21a31aa2ab2ac2a12a22a32aa3ab3ac3a13a23a33aaab巴布出租车1ab2ab3ab艾布bbbcbb1bb2bb3bbacbbcb抄送1cb2cb3cba1bb1bc1b11b21b31ba2bB2Bc2b12b22b32ba3bb3bc3b13b23b33bAAC巴克咖啡机1ac2ac3ac美国广播公司英国广播公司加拿大广播公司公元前1年公元前2年公元前3年ACC密件抄送抄送1cc2cc3cca1cb1cc1c11c21c31ca2cB2Cc2c12c22c32ca3cb3cc3c13c23c33caa1ba1ca11a12a13a1ab1bb1CB11b12b13b1ac1BC1cc11c12c13c1a11乙11c11111211311a21b21c21121221321a31b31c31131231331aa2ba2ca21a22a23a2ab2bb2CB21b22b23b2ac2BC2cc21c22c23c2a12b12c12112212312a22b22c22122222322a32b32c32132232332aa3ba3ca31a32a33a3ab3bb3CB31b32b33b3ac3BC3cc31c32c33c3a13b13c13113213313a23b23c23123223323a33b33c33133233333啊啊啊咩咩卡阿1aaa2aaa3aaa阿巴巴阿cbaa1baa2baa3baa阿卡支链氨基酸咖啡厅1caa2caa3caaa1aab1aac1aa11aa21aa31aaa2aab2aac2aa12aa22aa32aaa3aab3aac3aa13aa23aa33aa阿巴巴巴卡巴1aba2aba3aba阿爸巴巴加拿大工商银行1bba2bba3bba阿巴BCBA中央银行1cba2cba3cbaa1bab1bac1ba11ba21ba31baa2bab2bac2ba12ba22ba32baa3bab3bac3ba13ba23ba33ba阿卡巴卡可卡1阿卡2aca3acaabca英国广播公司加拿大商业银行1bca2bca3bca阿卡密西根ccca1cc2cc3cca1cab1cac1ca11ca21ca31caa2caB2CAc2ca12ca22ca32caa3cab3cac3ca13ca23ca33caaa1aba1aca1a1a1a2a1a3a1aab1abb1aCB1a1b1a2b1a3b1aac1abc1acc1a1c1a2c1a3c1aa11ab11ac11a111a211a311aa21ab21ac21a121a221a321aa31ab31ac31a131a231a331aaa2aba2aca2a1a2a2a2a3a2aab2abb2aCB2A1b2a2b2a3b2aac2abc2acc2a1c2a2c2a3c2aa12ab12ac12a112a212a312aa22ab22ac22a122a222a322aa32ab32ac32a132a232a332aaa3aba3aca3a1a3a2a3a3a3aab3abb3aCB3a1b3a2b3a3b3aac3abc3acc3a1c3a2c3a3c3aa13ab13ac13a113a213a313aa23ab23ac23a123a223a323aa33ab33ac33a133a233a333aaaab巴布驾驶室1aab2aab3aab阿巴巴布cbab1bab2bab3bab驾驶室出租车驾驶室1辆出租车2cab3caba1abb1abc1ab11ab21ab31aba2abb2abc2ab12ab22ab32aba3abb3abc3ab13ab23ab33ab阿布巴布出租车1abb2abb3abb艾伯bbbbbbb1bbb2bbb3bbacbbbbcccbb1cbb2cbb3cbba1bbb1bbc1bb11bb21bb31bba2bbb2bbc2bb12bb22bb32bba3bbb3bbc3bb13bb23bb33bbaacb巴布咖啡因1acb2acb3acbabcb英国广播公司中央银行1bcb2bcb3bcbACCB抄送中央银行1ccb2ccb3cca1cbb1cbc1cb11cb21cb31cba2cbb2cbc2cb12cb22cb32cba3cbb3cbc3cb13cb23cb33cbaa1bba1bca1b1a1b2a1b3a1bab1bbb1bCB1b1b1b2b1b3b1bac1bbc1bcc1b1c1b2c1b3c1ba11bb11bc11b111b211b311ba21bb21bc21b121b221b321ba31bb31bc31b131b231b331baa2bba2bca2b1a2b2a2b3a2bab2bbb2bCB2B1b2b2b2b3b2bac2bbc2bcc2b1c2b2c2b3c2ba12bb12bc12b112b212b312ba22bb22bc22b122b222b322ba32bb32bc32b132b232b332baa3bba3bca3b1a3b2a3b3a3bab3bbb3bCB3B1b3b2b3b3b3bac3bbc3bcc3b1c3b2c3b3c3ba13bb13bc13b113b213b313ba23bb23bc23b123b223b323ba33bb33bc33b133b233b333baaac巴克民航局1aac2aac3aac算盘巴克商会1bac2bac3bacacacBCAC卡卡1cac2cac3caca1acb1acc1ac11ac21ac31aca2acb2acc2ac12ac22ac32aca3acb3acc3ac13ac23ac33ac美国广播公司英国广播公司驾驶室1abc2abc3abc美国广播公司英国广播公司英国广播公司1英国广播公司2英国广播公司3英国广播公司澳大利亚广播公司英国广播公司中央广播公司1cbc2cbc3cbca1bcb1bcc1bc公元前 11 年公元前 21 年公元前31年a2bcb2bcc2bc公元前12年公元前22年公元前32年a3bcb3bcc3bc公元前 13 年公元前23年公元前33年空调巴克咖啡馆1acc2acc3acc美国广播公司英国广播公司公证处1bcc2密件抄送3bccACCC密件抄送cccc1cc2cc3cca1ccb1ccc1cc11cc21cc31cca2ccb2ccc2cc12cc22cc32cca3ccb3ccc3cc13cc23cc33ccaa1cba1cca1c1a1c2a1c3a1cab1cbb1cCB1c1b1c2b1c3b1cac1cbc1ccc1c1c1c2c1c3c1ca11cb11cc11c111c211c311ca21cb21cc21c121c221c321ca31cb31cc31c131c231c331caa2cba2cca2c1a2c2a2c3a2cab2cbb2ccb2c1b2c2b2c3b2cac2cBC2Ccc2c1c2c2c2c3c2ca12cb12cc12c112c212c312ca22cb22cc22c122c222c322ca32cb32cc32c132c232c332caa3cba3cca3c1a3c2a3c3a3cab3cbb3cCB3C1b3c2b3c3b3cac3cBC3Ccc3c1c3c2c3c3c3ca13cb13cc13c113c213c313ca23cb23cc23c123c223c323ca33cb33cc33c133c233c333caaa1baa1caa11aa12aa13aa1aba1bba1cba11ba12ba13ba1aca1bca1cca11ca12ca13ca1a1a1b1a1c1a111a121a131a1a2a1b2a1c2a112a122a132a1a3a1b3a1c3a113a123a133a1aab1bab1驾驶室11ab12ab13ab1abb1bb1cbb11bb12bb13bb1acb1bcb1ccb11cb12cb13cb1a1b1b1b1c1b111b121b131b1a2b1b2b1c2b112b122b132b1a3b1b3b1c3b113b123b133b1ac1bac1cac11ac12ac13ac1abc1英国广播公司cbc11bc12bc13bc1ACC1密件抄送1cc11cc12cc13cc1a1c1b1c1c1c111c121c131c1a2c1b2c1c2c112c122c132c1a3c1b3c1c3c113c123c133c1aa11ba11ca111a112a113a11ab11bb11CB111b112b113b11ac11BC11cc111c112c113c11a111B111c111111121113111a211b211c211121122113211a311b311c311131123113311aa21ba21ca211a212a213a21ab21bb21CB211b212b213b21ac21BC21cc211c212c213c21a121b121c121112121213121a221b221c221122122213221a321b321c321132123213321aa31ba31ca311a312a313a31ab31bb31CB311b312b313b31ac31BC31cc311c312c313c31a131b131c131113121313131a231b231c231123122313231a331b331c331133123313331aaa2baa2caa21aa22aa23aa2aba2bba2cba21ba22ba23ba2aca2bca2cca21ca22ca23ca2a1a2b1a2c1a211a221a231a2a2a2b2a2c2a212a222a232a2a3a2b3a2c3a213a223a233a2aab2bab2驾驶室21ab22ab23ab2abb2bbb2cbb21bb22bb23bb2acb2bcb2ccb21cb22cb23cb2a1b2b1b2c1b211b221b231b2a2b2B2B2c2b212b222b232b2a3b2b3b2c3b213b223b233b2ac2bac2cac21ac22ac23ac2abc2英国广播公司2cbc21bc22bc23bc2ACC2密件抄送2cc21cc22cc23cc2a1c2b1c2c1c211c221c231c2a2c2b2c2c2c212c222c232c2a3c2b3c2c3c213c223c233c2aa12ba12ca121a122a123a12ab12bb12CB121b122b123b12ac12BC12cc121c122c123c12a112b112c112111221123112a212b212c212121222123212a312b312c312131223123312aa22ba22ca221a222a223a22ab22bb22CB221b222b223b22ac22BC22cc221c222c223c22a122b122c122112221223122a222b222c222122222223222a322b322c322132223223322aa32ba32ca321a322a323a32ab32bb32CB321b322b323b32ac32BC32cc321c322c323c32a132b132c132113221323132a232b232c232123222323232a332b332c332133223323332aaa3baa3caa31aa32aa33aa3aba3bba3cba31ba32ba33ba3aca3bca3cca31ca32ca33ca3a1a3b1a3c1a311a321a331a3a2a3b2a3c2a312a322a332a3a3a3b3a3c3a313a323a333a3aab3bab3驾驶室31ab32ab33ab3abb3bb3cbb31bb32bb33bb3acb3bcb3ccb31cb32cb33cb3a1b3b1b3c1b311b321b331b3a2b3b2b3c2b312b322b332b3a3b3b3b3c3b313b323b333b3ac3bac3cac31ac32ac33ac3abc3英国广播公司3cbc31bc32bc33bc3ACC3密件抄送3cc31cc32cc33cc3a1c3b1c3c1c311c321c331c3a2c3b2c3c2c312c322c332c3a3c3b3c3c3c313c323c333c3aa13ba13ca131a132a133a13ab13bb13CB131b132b133b13ac13BC13cc131c132c133c13a113b113c113111321133113a213b213c213121322133213a313b313c313131323133313aa23ba23ca231a232a233a23ab23bb23CB231b232b233b23ac23BC23cc231c232c233c23a123b123c123112321233123a223b223c223122322233223a323b323c323132323233323aa33ba33ca331a332a333a33ab33bb33CB331b332b333b33ac33BC33cc331c332c333c33a133b133c133113321333133a233b233c233123322333233a333b333c333133323333333

What is the best algorithm to get all possible string combinations from a given array with a minimum & maximum length value.

Note: This adds complexity since the value is variable unlike the questions these are linked to.

For example:

$letters = array('a','b','c','1','2','3');
$min_length = 1;
$max_length = 4;

a
b
c
1
2
3
.
.
.
aaaa
a123
b123
c123

解决方案

Almost a Base Conversion

This solution is motivated by the observation that, if it were not for the possibility of repeating the character at array index 0 in the high-order position of a valid combination, this problem would simply be a base conversion from decimal to the new base of all integers from 0 to (base^length)-1. So,

0 = a
1 = b
...
1294 = 3332
1295 = 3333

The difficulty is that this misses combinations with one or more leading 'a', like:

aa
...
a1
aa1
aaa1

And these are the only solutions missing. So one could simply, for each generated combination with length less than max_length, add 'a' (or whatever is at letters[0]) to the front of the string, and output that string, repeating if necessary. So if you generate the string 'b', you'd output:

b
ab
aab
aaab

This works, but it is unsatisfying, first because it looks like a kludged solution. Second, it does not generate the solutions in lexicographical order, which may or may not be a problem. Third, it would be really nice if the function to generate the combinations was bijective so that we knew the unique combination that results from any given decimal integer and the unique index of any combination. This will be critical in a moment.

Imagine There's No Zero

If the zero index is giving us problems, then why not do away with it? Say we change the array to:

letters = {∅,'a','b','c','1','2','3'}

where ∅ is an arbitrary placeholder that will never be used. We will now attempt to represent the decimal integers from 1 to base^max_length in the new base (in this case still 6, not 7) without using the digit zero. We'll represent the numbers from 1 to base-1 as normal (1, 2, 3, ...) but when we get to the number equal to the base, rather than represent it as 10, we'll represent it as the base digit (e.g., 6 rather than 10 in base 6). The next number, base+1, would be 11, then 12 up to 16 (which is equal to 12 decimal) and then up to 21. Each number

an,an-1,...,a1,a0

in the new base is equal to

an*bn+an-1*bn-1+...+a1*b1+a0*b0

in decimal, where b is the new base.

As I've come to learn, this is fittingly called a bijective numeration. Taking an example, in base 6 we would have:

Base 10    Base 6
1          1
2          2
...
6          6
7          11
8          12
...
11         15
12         16
13         21
...
36         56

From the Wikipedia link above, the first "digit" of the number in the new base is:

a0 = m - q0k

where k is the new base, m is the integer to convert, and q0 = ceiling(m/k)-1. Note the similarity to a normal base conversion where the only difference is that q0 would be floor(m/k) or ordinary integer division. Subsequent "digits" are computed similarly, using q0 instead of m to find a1, etc.

This formula can be broken down into two cases:

  • (m mod k) == 0: a0 = k and q0 = (m div k) - 1
  • (m mod k) != 0: a0 = (m mod k) and q0 = (m div k)

This is the heart of the algorithm. For any integer m we can iteratively apply this formula until the resulting qp == 0. Also note that the conversion is, naturally, reversible. Given a number 6666 in base 6, the decimal value is:

(6*6^3)+(6*6^2)+(6*6^1)+(6*6^0)=1554

We use this fact to find the range of integers to convert in order to get all combinations of a certain length. Sorry, but my PHP skills are non-existent. Hopefully the Java code is clear enough. Given:

    char [] letters = new char [] {'0','a','b','c','1','2','3'};
    int max_length = 4;

we have the function:

    int b = letters.length - 1;  // base to convert to
    int n = 0;
    for (int k = 0; k < max_length; k++)
        n = (n*b)+b;  // number of combinations

    int remainder;
    for (int i = 1; i <= n; i++) {
        int current = i;  // m and q_n in the formula
        String combination = "";
        do {
            remainder = current % b;
            if (remainder == 0) {
                combination += letters[b];
                current = current/b - 1;
            } else {
                combination += letters[remainder];
                current = current/b;
            }
        } while (current > 0);
        System.out.println(combination);
    }

where / represents integer division, or floor(a/b).

The function relies only on the input integer and not on the results of previous calculations, so the possibilities for parallel processing are pretty good.

Here is the output with the above input. Least significant digit is first, as per your example.

a
b
c
1
2
3
aa
ba
ca
1a
2a
3a
ab
bb
cb
1b
2b
3b
ac
bc
cc
1c
2c
3c
a1
b1
c1
11
21
31
a2
b2
c2
12
22
32
a3
b3
c3
13
23
33
aaa
baa
caa
1aa
2aa
3aa
aba
bba
cba
1ba
2ba
3ba
aca
bca
cca
1ca
2ca
3ca
a1a
b1a
c1a
11a
21a
31a
a2a
b2a
c2a
12a
22a
32a
a3a
b3a
c3a
13a
23a
33a
aab
bab
cab
1ab
2ab
3ab
abb
bbb
cbb
1bb
2bb
3bb
acb
bcb
ccb
1cb
2cb
3cb
a1b
b1b
c1b
11b
21b
31b
a2b
b2b
c2b
12b
22b
32b
a3b
b3b
c3b
13b
23b
33b
aac
bac
cac
1ac
2ac
3ac
abc
bbc
cbc
1bc
2bc
3bc
acc
bcc
ccc
1cc
2cc
3cc
a1c
b1c
c1c
11c
21c
31c
a2c
b2c
c2c
12c
22c
32c
a3c
b3c
c3c
13c
23c
33c
aa1
ba1
ca1
1a1
2a1
3a1
ab1
bb1
cb1
1b1
2b1
3b1
ac1
bc1
cc1
1c1
2c1
3c1
a11
b11
c11
111
211
311
a21
b21
c21
121
221
321
a31
b31
c31
131
231
331
aa2
ba2
ca2
1a2
2a2
3a2
ab2
bb2
cb2
1b2
2b2
3b2
ac2
bc2
cc2
1c2
2c2
3c2
a12
b12
c12
112
212
312
a22
b22
c22
122
222
322
a32
b32
c32
132
232
332
aa3
ba3
ca3
1a3
2a3
3a3
ab3
bb3
cb3
1b3
2b3
3b3
ac3
bc3
cc3
1c3
2c3
3c3
a13
b13
c13
113
213
313
a23
b23
c23
123
223
323
a33
b33
c33
133
233
333
aaaa
baaa
caaa
1aaa
2aaa
3aaa
abaa
bbaa
cbaa
1baa
2baa
3baa
acaa
bcaa
ccaa
1caa
2caa
3caa
a1aa
b1aa
c1aa
11aa
21aa
31aa
a2aa
b2aa
c2aa
12aa
22aa
32aa
a3aa
b3aa
c3aa
13aa
23aa
33aa
aaba
baba
caba
1aba
2aba
3aba
abba
bbba
cbba
1bba
2bba
3bba
acba
bcba
ccba
1cba
2cba
3cba
a1ba
b1ba
c1ba
11ba
21ba
31ba
a2ba
b2ba
c2ba
12ba
22ba
32ba
a3ba
b3ba
c3ba
13ba
23ba
33ba
aaca
baca
caca
1aca
2aca
3aca
abca
bbca
cbca
1bca
2bca
3bca
acca
bcca
ccca
1cca
2cca
3cca
a1ca
b1ca
c1ca
11ca
21ca
31ca
a2ca
b2ca
c2ca
12ca
22ca
32ca
a3ca
b3ca
c3ca
13ca
23ca
33ca
aa1a
ba1a
ca1a
1a1a
2a1a
3a1a
ab1a
bb1a
cb1a
1b1a
2b1a
3b1a
ac1a
bc1a
cc1a
1c1a
2c1a
3c1a
a11a
b11a
c11a
111a
211a
311a
a21a
b21a
c21a
121a
221a
321a
a31a
b31a
c31a
131a
231a
331a
aa2a
ba2a
ca2a
1a2a
2a2a
3a2a
ab2a
bb2a
cb2a
1b2a
2b2a
3b2a
ac2a
bc2a
cc2a
1c2a
2c2a
3c2a
a12a
b12a
c12a
112a
212a
312a
a22a
b22a
c22a
122a
222a
322a
a32a
b32a
c32a
132a
232a
332a
aa3a
ba3a
ca3a
1a3a
2a3a
3a3a
ab3a
bb3a
cb3a
1b3a
2b3a
3b3a
ac3a
bc3a
cc3a
1c3a
2c3a
3c3a
a13a
b13a
c13a
113a
213a
313a
a23a
b23a
c23a
123a
223a
323a
a33a
b33a
c33a
133a
233a
333a
aaab
baab
caab
1aab
2aab
3aab
abab
bbab
cbab
1bab
2bab
3bab
acab
bcab
ccab
1cab
2cab
3cab
a1ab
b1ab
c1ab
11ab
21ab
31ab
a2ab
b2ab
c2ab
12ab
22ab
32ab
a3ab
b3ab
c3ab
13ab
23ab
33ab
aabb
babb
cabb
1abb
2abb
3abb
abbb
bbbb
cbbb
1bbb
2bbb
3bbb
acbb
bcbb
ccbb
1cbb
2cbb
3cbb
a1bb
b1bb
c1bb
11bb
21bb
31bb
a2bb
b2bb
c2bb
12bb
22bb
32bb
a3bb
b3bb
c3bb
13bb
23bb
33bb
aacb
bacb
cacb
1acb
2acb
3acb
abcb
bbcb
cbcb
1bcb
2bcb
3bcb
accb
bccb
cccb
1ccb
2ccb
3ccb
a1cb
b1cb
c1cb
11cb
21cb
31cb
a2cb
b2cb
c2cb
12cb
22cb
32cb
a3cb
b3cb
c3cb
13cb
23cb
33cb
aa1b
ba1b
ca1b
1a1b
2a1b
3a1b
ab1b
bb1b
cb1b
1b1b
2b1b
3b1b
ac1b
bc1b
cc1b
1c1b
2c1b
3c1b
a11b
b11b
c11b
111b
211b
311b
a21b
b21b
c21b
121b
221b
321b
a31b
b31b
c31b
131b
231b
331b
aa2b
ba2b
ca2b
1a2b
2a2b
3a2b
ab2b
bb2b
cb2b
1b2b
2b2b
3b2b
ac2b
bc2b
cc2b
1c2b
2c2b
3c2b
a12b
b12b
c12b
112b
212b
312b
a22b
b22b
c22b
122b
222b
322b
a32b
b32b
c32b
132b
232b
332b
aa3b
ba3b
ca3b
1a3b
2a3b
3a3b
ab3b
bb3b
cb3b
1b3b
2b3b
3b3b
ac3b
bc3b
cc3b
1c3b
2c3b
3c3b
a13b
b13b
c13b
113b
213b
313b
a23b
b23b
c23b
123b
223b
323b
a33b
b33b
c33b
133b
233b
333b
aaac
baac
caac
1aac
2aac
3aac
abac
bbac
cbac
1bac
2bac
3bac
acac
bcac
ccac
1cac
2cac
3cac
a1ac
b1ac
c1ac
11ac
21ac
31ac
a2ac
b2ac
c2ac
12ac
22ac
32ac
a3ac
b3ac
c3ac
13ac
23ac
33ac
aabc
babc
cabc
1abc
2abc
3abc
abbc
bbbc
cbbc
1bbc
2bbc
3bbc
acbc
bcbc
ccbc
1cbc
2cbc
3cbc
a1bc
b1bc
c1bc
11bc
21bc
31bc
a2bc
b2bc
c2bc
12bc
22bc
32bc
a3bc
b3bc
c3bc
13bc
23bc
33bc
aacc
bacc
cacc
1acc
2acc
3acc
abcc
bbcc
cbcc
1bcc
2bcc
3bcc
accc
bccc
cccc
1ccc
2ccc
3ccc
a1cc
b1cc
c1cc
11cc
21cc
31cc
a2cc
b2cc
c2cc
12cc
22cc
32cc
a3cc
b3cc
c3cc
13cc
23cc
33cc
aa1c
ba1c
ca1c
1a1c
2a1c
3a1c
ab1c
bb1c
cb1c
1b1c
2b1c
3b1c
ac1c
bc1c
cc1c
1c1c
2c1c
3c1c
a11c
b11c
c11c
111c
211c
311c
a21c
b21c
c21c
121c
221c
321c
a31c
b31c
c31c
131c
231c
331c
aa2c
ba2c
ca2c
1a2c
2a2c
3a2c
ab2c
bb2c
cb2c
1b2c
2b2c
3b2c
ac2c
bc2c
cc2c
1c2c
2c2c
3c2c
a12c
b12c
c12c
112c
212c
312c
a22c
b22c
c22c
122c
222c
322c
a32c
b32c
c32c
132c
232c
332c
aa3c
ba3c
ca3c
1a3c
2a3c
3a3c
ab3c
bb3c
cb3c
1b3c
2b3c
3b3c
ac3c
bc3c
cc3c
1c3c
2c3c
3c3c
a13c
b13c
c13c
113c
213c
313c
a23c
b23c
c23c
123c
223c
323c
a33c
b33c
c33c
133c
233c
333c
aaa1
baa1
caa1
1aa1
2aa1
3aa1
aba1
bba1
cba1
1ba1
2ba1
3ba1
aca1
bca1
cca1
1ca1
2ca1
3ca1
a1a1
b1a1
c1a1
11a1
21a1
31a1
a2a1
b2a1
c2a1
12a1
22a1
32a1
a3a1
b3a1
c3a1
13a1
23a1
33a1
aab1
bab1
cab1
1ab1
2ab1
3ab1
abb1
bbb1
cbb1
1bb1
2bb1
3bb1
acb1
bcb1
ccb1
1cb1
2cb1
3cb1
a1b1
b1b1
c1b1
11b1
21b1
31b1
a2b1
b2b1
c2b1
12b1
22b1
32b1
a3b1
b3b1
c3b1
13b1
23b1
33b1
aac1
bac1
cac1
1ac1
2ac1
3ac1
abc1
bbc1
cbc1
1bc1
2bc1
3bc1
acc1
bcc1
ccc1
1cc1
2cc1
3cc1
a1c1
b1c1
c1c1
11c1
21c1
31c1
a2c1
b2c1
c2c1
12c1
22c1
32c1
a3c1
b3c1
c3c1
13c1
23c1
33c1
aa11
ba11
ca11
1a11
2a11
3a11
ab11
bb11
cb11
1b11
2b11
3b11
ac11
bc11
cc11
1c11
2c11
3c11
a111
b111
c111
1111
2111
3111
a211
b211
c211
1211
2211
3211
a311
b311
c311
1311
2311
3311
aa21
ba21
ca21
1a21
2a21
3a21
ab21
bb21
cb21
1b21
2b21
3b21
ac21
bc21
cc21
1c21
2c21
3c21
a121
b121
c121
1121
2121
3121
a221
b221
c221
1221
2221
3221
a321
b321
c321
1321
2321
3321
aa31
ba31
ca31
1a31
2a31
3a31
ab31
bb31
cb31
1b31
2b31
3b31
ac31
bc31
cc31
1c31
2c31
3c31
a131
b131
c131
1131
2131
3131
a231
b231
c231
1231
2231
3231
a331
b331
c331
1331
2331
3331
aaa2
baa2
caa2
1aa2
2aa2
3aa2
aba2
bba2
cba2
1ba2
2ba2
3ba2
aca2
bca2
cca2
1ca2
2ca2
3ca2
a1a2
b1a2
c1a2
11a2
21a2
31a2
a2a2
b2a2
c2a2
12a2
22a2
32a2
a3a2
b3a2
c3a2
13a2
23a2
33a2
aab2
bab2
cab2
1ab2
2ab2
3ab2
abb2
bbb2
cbb2
1bb2
2bb2
3bb2
acb2
bcb2
ccb2
1cb2
2cb2
3cb2
a1b2
b1b2
c1b2
11b2
21b2
31b2
a2b2
b2b2
c2b2
12b2
22b2
32b2
a3b2
b3b2
c3b2
13b2
23b2
33b2
aac2
bac2
cac2
1ac2
2ac2
3ac2
abc2
bbc2
cbc2
1bc2
2bc2
3bc2
acc2
bcc2
ccc2
1cc2
2cc2
3cc2
a1c2
b1c2
c1c2
11c2
21c2
31c2
a2c2
b2c2
c2c2
12c2
22c2
32c2
a3c2
b3c2
c3c2
13c2
23c2
33c2
aa12
ba12
ca12
1a12
2a12
3a12
ab12
bb12
cb12
1b12
2b12
3b12
ac12
bc12
cc12
1c12
2c12
3c12
a112
b112
c112
1112
2112
3112
a212
b212
c212
1212
2212
3212
a312
b312
c312
1312
2312
3312
aa22
ba22
ca22
1a22
2a22
3a22
ab22
bb22
cb22
1b22
2b22
3b22
ac22
bc22
cc22
1c22
2c22
3c22
a122
b122
c122
1122
2122
3122
a222
b222
c222
1222
2222
3222
a322
b322
c322
1322
2322
3322
aa32
ba32
ca32
1a32
2a32
3a32
ab32
bb32
cb32
1b32
2b32
3b32
ac32
bc32
cc32
1c32
2c32
3c32
a132
b132
c132
1132
2132
3132
a232
b232
c232
1232
2232
3232
a332
b332
c332
1332
2332
3332
aaa3
baa3
caa3
1aa3
2aa3
3aa3
aba3
bba3
cba3
1ba3
2ba3
3ba3
aca3
bca3
cca3
1ca3
2ca3
3ca3
a1a3
b1a3
c1a3
11a3
21a3
31a3
a2a3
b2a3
c2a3
12a3
22a3
32a3
a3a3
b3a3
c3a3
13a3
23a3
33a3
aab3
bab3
cab3
1ab3
2ab3
3ab3
abb3
bbb3
cbb3
1bb3
2bb3
3bb3
acb3
bcb3
ccb3
1cb3
2cb3
3cb3
a1b3
b1b3
c1b3
11b3
21b3
31b3
a2b3
b2b3
c2b3
12b3
22b3
32b3
a3b3
b3b3
c3b3
13b3
23b3
33b3
aac3
bac3
cac3
1ac3
2ac3
3ac3
abc3
bbc3
cbc3
1bc3
2bc3
3bc3
acc3
bcc3
ccc3
1cc3
2cc3
3cc3
a1c3
b1c3
c1c3
11c3
21c3
31c3
a2c3
b2c3
c2c3
12c3
22c3
32c3
a3c3
b3c3
c3c3
13c3
23c3
33c3
aa13
ba13
ca13
1a13
2a13
3a13
ab13
bb13
cb13
1b13
2b13
3b13
ac13
bc13
cc13
1c13
2c13
3c13
a113
b113
c113
1113
2113
3113
a213
b213
c213
1213
2213
3213
a313
b313
c313
1313
2313
3313
aa23
ba23
ca23
1a23
2a23
3a23
ab23
bb23
cb23
1b23
2b23
3b23
ac23
bc23
cc23
1c23
2c23
3c23
a123
b123
c123
1123
2123
3123
a223
b223
c223
1223
2223
3223
a323
b323
c323
1323
2323
3323
aa33
ba33
ca33
1a33
2a33
3a33
ab33
bb33
cb33
1b33
2b33
3b33
ac33
bc33
cc33
1c33
2c33
3c33
a133
b133
c133
1133
2133
3133
a233
b233
c233
1233
2233
3233
a333
b333
c333
1333
2333
3333

这篇关于从数组中获取所有可能的字符串组合到特定长度的算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆