2017-10-14 6 views
0

私は配列を作成し、それをシャッフルして配列が偶数の順列を持つかどうかをチェックしたいと思います。誰でも私はそれをどのようにすることができるかという考えを持っていますか?配列に偶数の並べ替えがあるかどうかを確認するにはどうすればよいですか?

totalTiles = (column * row) ; 
int[] randomNumberArray = new int[totalTiles]; 

for (int p = 0; p < totalTiles; p++) 
{ 
    randomNumberArray[p] = number; 
    number++; 
} 

Shuffle(randomNumberArray); 

配列

static void Shuffle <T>(T[] array) 
{ 
     Random _random = new Random(); 
     int n = array.Length; 

     for (int i = 0; i < n; i++) 
     { 
      int r = i + _random.Next(n - i); 
      T t = array[r]; 
      array[r] = array[i]; 
      array[i] = t; 
     } 
} 
+1

「偶数の順列を持つ」とはどういう意味ですか?それに偶数が含まれているかどうかを知りたいですか?または偶数だけ?偶数を検出するには、式number%2 == 0を使用します。 – Will

+0

偶数順列は、2つの項目の偶数回のスワップを実行することによって実行できるものです。したがって、この場合、置換は「n」が偶数であっても、かつ、ただである。 –

答えて

0

をシャッフルする方法は、これはおそらく助けてもらえますか? https://en.wikipedia.org/wiki/Heap%27s_algorithm順列を生成した後、% 2 == 0が偶数であるかどうかをチェックするだけですか?ちょうど推測。ただ、すぐにwikiページから取ら

procedure generate(n : integer, A : array of any): if n = 1 then output(A) else for i := 0; i < n - 1; i += 1 do generate(n - 1, A) if n is even then swap(A[i], A[n-1]) else swap(A[0], A[n-1]) end if end for generate(n - 1, A) end if

関連する問題