我有像下面的阵列

int[] array = new array[n];// n may be 2,3,4

例如,对于N = 4

int[] array = new array[4];

array[0] = 2;
array[1] = 4;
array[2] = 6;
array[3] = 8;

如何计算该阵列的所有不重复的组合,而无需使用LINQ可以是内

2,4,6,8,点击 2,4,8,6结果 2,8,6,4结果 2,6,4,6结果 8,6,4,2结果 2,4,6,8结果 .......点击 .......点击 .......结果

有帮助吗?

解决方案

这里的一个非常灵活C#实现使用迭代器。

其他提示

好了,因为你正在寻找所有不重复的组合,这意味着将有N个!这样的组合...(所以,在你的情况下,N!= 4!= 24名这样的组合)。

我在张贴这中间我,dommer指出了一个很好的实现。

一定要小心,它是要获得大的N值很慢(因为有N!排列)。

想一想世界的两种可能的状态,看看是否能揭示任何光。

1),我们在我的阵列没有愚弄(即阵列中的每个数是唯一的)。在这种情况下,有多少可能的排列的有哪些?

2)是阵列中的一个单一的重复数据删除。所以,您在第一部分计算置换的数量,多少都只是复制

嗯,让我们的三个元件阵列为简单起见

1,3,5有多少排列?

1,3,5

1,5,3

3,1,5

3,5,1

5,1,3

5,3,1

于是6个排列

现在,如果我们改变列表说1,5,5-会发生什么?

我们获得

1,5,5-

5,1,5

5,5,1

我想问你的是,你怎么能透过阶乘表述?

也许尝试具有四个元件阵列写出所有的排列,看看灯泡熄灭?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top