相关疑难解决方法(0)

std :: next_permutation的摊销复杂性?

我刚刚读到了关于next_permutation复杂性的另一个问题,虽然我对响应(O(n))感到满意,但似乎算法可能有一个很好的摊销分析,显示出较低的复杂性.有谁知道这样的分析?

c++ algorithm big-o stl permutation

19
推荐指数
2
解决办法
6650
查看次数

Javascript创建一个具有唯一值组合的数组

尽管阅读了很多关于排列/组合的Q/A:查找JavaScript数组值的所有组合 + JavaScript - 从具有m个元素的n个数组生成组合我还没有找到正确的方法来获得我正在寻找的那种结果.我有一个10值数组:

var arr = [0,1,2,3,4,5,6,7,8,9];
Run Code Online (Sandbox Code Playgroud)

如果我是对的,所有可能的唯一值的置换数组(没有重复)的数量:

[5,9,1,8,2,6,7,0,4,3] [4,8,0,2,1,9,7,3,6,5] ...
Run Code Online (Sandbox Code Playgroud)

是2x3x4x5x6x7x8x9x10 = 3628800

我正在尝试生成一个动态创建'n'数组的函数.例如:

function createArray(0) -> [0,1,2,3,4,5,6,7,8,9]
function createArray(45648) -> [0,1,5,3,2,8,7,9,6] (something like...)
function createArray(3628800) -> [9,8,7,6,5,4,3,2,1,0]
Run Code Online (Sandbox Code Playgroud)

我想要实现它的方式是:

  • createArray(1)置换最后2个符号(8,9 - > 9,8)

  • createArray(2-> 6)置换最后3个符号(8,7,9 - > 9,8,7)

  • createArray(3628800):所有值都被置换(9-> 0)

你认为这可行/容易吗?如果是的话怎么办?

[编辑]

谢谢你的回答

function permute(permutation, val) {

  var length = permutation.length,
  result = [permutation.slice()],
  c = new Array(length).fill(0),
  i = 1, k, p,
  n = 0;
  while (i < length) {
  if (c[i] < i) …
Run Code Online (Sandbox Code Playgroud)

javascript arrays combinations permutation

5
推荐指数
1
解决办法
393
查看次数

Python:生成长度为N的所有唯一排序列表

我想详尽地分析用于排序小数组的子程序,并且需要一种方法来生成特定长度的所有唯一排序的数组.在Python中,这将是具有非负整数作为元素的列表,并且最好在可能时使用最小整数.例如,N = 3:

[[0,0,0],
[0,0,1],
[0,1,0],
[0,1,1],
[0,1,2],
[0,2,1],
[1,0,0],
[1,0,1],
[1,0,2],
[1,1,0],
[1,2,0],
[2,0,1],
[2,1,0]]
Run Code Online (Sandbox Code Playgroud)

[1,1,1][2,2,0]没有在上面的列表中属于,因为[0,0,0][1,1,0]分别具有相同的相对顺序,同时使用较小的整数.

python arrays sorting generator permutation

5
推荐指数
1
解决办法
138
查看次数