0

我正在寻找一种有效的方法来实现这一目标:

  1. 你有一组数字,假设我们的集合等于 4 (N = 4);
  2. 您必须生成 3 个元素的所有排列(K = 3);

N = 4 和 K = 3 的输出:

1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2

任何人都有一个很棒的,nice'n'quick 算法在他们的袖子或网络参考?

谢谢!

4

1 回答 1

1

像这样的伪代码:

permute(set, output, len)  //output will hold all the permutations

for each number in the set do
    choose number and store it at output[0]
    if(!empty(set))
        call permute(set{without the number}, output + (len - 1)!, len-1) //adjust the position

调用者permute(set, output, k)

于 2012-11-01T16:31:01.460 回答