我们如何以递增的长度顺序生成长度为1到n的n个字符的所有可能组合?
例如:如果n = 4且字符为1,2,3,4 我们需要生成一个数组
1,2,3,4
12,13,14,23,24,34
123, 124, 134, 234
1234
这里n是变量,用户可以输入n个字符。
答案 0 :(得分:0)
最多n个元素的组合与长度为n
的位掩码之间存在双射。解决问题的一种方法是生成长度为n的所有位集,并按它们所在的位数对它们进行排序。您可以使用bucket sort。
创建与0到n之间的数字对应的n+1
列表。然后迭代所有位掩码,并为每个位掩码计算其中1
的位数,然后在相应的列表中添加位掩码。使用这些列表,解决问题应该很容易。