这似乎与其他排列问题相似,但是差异被证明是一个挑战。
[given x options
(通常为3-7,或[a,b,c]
至[a,b,c,d,e,f,g]
]]
全部获取permutations of y length
(通常也是3-7)
x = [a,b,c] y = 7
[a,a,a,a,a,a,a]
[a,a,a,a,a,a,b]
[a,a,a,a,a,b,a]
[a,a,a,a,b,a,c]
[a,c,a,b,a,a,a]
etc.
或
x=7 [a,b,c,d,e,f,g] y=3
[a,a,a]
[a,d,g]
[a,g,d]
[g,d,a]
etc.
我想说我已经到了某个地方,但我什至不知道如何开始,所有其他涉及置换的解决方案似乎都严重依赖于字符串长度。
不是真正的排列,它们是字母上的字符串。可以像这样递归实现:
let alphabet = ['a', 'b', 'c', 'd'];
let strings = [];
function generateStrings(alphabet, strings, length, prefix = [])
{
for (let letter of alphabet) {
if (length === 1) {
strings.push([letter].concat(prefix));
} else {
generateStrings(alphabet, strings, length - 1, [letter].concat(prefix));
}
}
}
generateStrings(alphabet, strings, 3);
console.log(strings);
希望这会有所帮助。