2009-05-28 23 views
0

iは、N iはLINQは内とすることができる使用することなく、この配列の全ての中継されない組み合わせの計算方法= 4組み合わせ質問

int[] array = new array[4]; 

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

ため

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

例えば以下のような配列を持っていますか?

2,4,6,8-
2,4,8,6
2,8,6,4
2,6,4,6
8,6,4,2
2 、4,6,8
.......
.......
.......

+1

あなたは順列を求めていますか?例:{2,4,6,8}、{2,4,8,6}、... –

+2

また宿題の場合は、そのようにタグ付けする必要があります。 –

答えて

0

あなたはすべての繰り返しのない組み合わせを探しているとすれば、それはN!そのような組み合わせ...(あなたの場合、N!= 4!= 24のような組み合わせ)。

私はこれを投稿している途中ですが、dommerは良い実装を指摘しています。

大きな値のN(N!の順列があるため)では、実際には遅くなることに注意してください。

+0

N = 4が上限だと思います。 –

+0

良い点、私はそれを逃した! – Daemonic

0

世界の可能性のある2つの状態について考えてみましょう。

1)私のアレイにはダブレットはありません(つまり、アレイ内の各番号は一意です)。この場合、の順番はどれくらいありますかはありますか?

2)アレイ内に単一のデュープが1つあります。だから、あなたはパート1で計算順列の数の、ちょうど

うーんと重複しているどのように多くの、シンプル

1,3,5のための3つの要素の配列を取ることができますがどのように多くの順列を持っていますか?

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

を取得階乗?

おそらく4つの要素の配列を持つすべての順列を書き出して、電球が消えてしまうのを見てみてください。