x个选项在y个位置的排列

问题描述 投票:0回答:1

这似乎与其他排列问题相似,但是差异被证明是一个挑战。

[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.   

我想说我已经到了某个地方,但我什至不知道如何开始,所有其他涉及置换的解决方案似乎都严重依赖于字符串长度。

javascript arrays permutation
1个回答
1
投票

不是真正的排列,它们是字母上的字符串。可以像这样递归实现:

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);

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.