0

簡単なパズルは解けますが、少し難しいパズルは解けません。私は何を見落としていますか?これが私のソルバーメソッドです:

   int solver (int x, int y)
   {
     int a, b, i, j;
     for (a=1; a<10; a++)
     {
       if (checkEverything(x, y, a))
       {
         board[x][y] = a;
         counter++;
         if (counter == 81)
         {
           return true;
         }
                     if (x == 9)

        {

          return true;

        }

        if (counter > 200 || counter < -10) {

          return false;

        }

        for (i=0; i<9; i++)

        {

          for (j=0; j<9; j++)

          {

            if (board[i][j] == 0)

            {

              if (solver(i, j))

              {

                return true;

              }   

            }

          }

        }

        counter--;      

      }

    }

    board[x][y] = 0;

    return false;

    }

私の checkEverything 関数は、指定された数値が行、列、および 3x3 グリッドに配置されても安全であることを確認します...私には正しいように思えますが、非常に遅いため、非常に迷っています。助けてくれてありがとう!

4

1 に答える 1