簡単なパズルは解けますが、少し難しいパズルは解けません。私は何を見落としていますか?これが私のソルバーメソッドです:
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 グリッドに配置されても安全であることを確認します...私には正しいように思えますが、非常に遅いため、非常に迷っています。助けてくれてありがとう!