2017-11-07 5 views
-2

これは私の最初の質問ですので、間違いはありません。スードクのループをループして、ソルバーを生成

一意の行を生成するために2番目のループを実行する方法は?

私はユニークなソリューションプログラムのハングアップを見つけるために、第二のループを追加するたび...

static void Main(string[] args) 
    { 
     int[,] tab = new int[9, 9]; 

     Random r = new Random(); 

     List<int> temp = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 

     for(int i = 0; i < 9; i++) 
     { 
      for(int j = 0; j < 9; j++) 
      {      
       while (true) 
       { 
        bool uniq = true; 

        int randomNumber = r.Next(0, 9); 

        for (int z = 0; z < i; z++) 
        {      
         if (randomNumber==tab[z,j]) 
         { 
          uniq = false; 
         } 
        }      
        if (uniq == false) 
        { 
         continue; 
        } 
        tab[i, j] = randomNumber; 

        temp.Remove(randomNumber); 
        break; 
       } 
+0

「プログラムのハングアップを」 - それが何を意味するのでしょうか? – OldProgrammer

+0

だから。たくさんの。ループ。あなたは何をしようとしているのですか? –

+0

私はすべての行と列に一意の数値を持つテーブルを生成しようとしています。私のプログラムでは、ユニークな列番号を取得しますが、行の数字を同じようにする方法はわかりません。 –

答えて

0

はこのお試しください:

private Random r = new Random(); 

void Main() 
{ 
    int[,] tab = new int[9, 9]; 

    List<int> digits = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 

    for (int i = 0; i < 9; i++) 
    { 
     List<int> temp = digits.OrderBy(x => r.Next()).ToList(); 
     for (int j = 0; j < 9; j++) 
     { 
      tab[i, j] = temp[j]; 
     } 
    } 
} 
関連する問題