数独解決アルゴリズムをしばらく探していたところ、このコードを見つけました。しかし、私にはいくつかの困難があります。理解できません。1 つのセルで 1 から 9 までのすべての数字と競合する場合、プログラムは停止するはずですよね? しかし、それは続きます。誰かがコードの仕組みを説明してくれませんか? ここにあります:
bool Sudoku::Help_Solve(int i, int j)
{
int nextrow, nextcol;
while(change[i][j] == 1) //We find the first cell in which we can change the number
{
j++;
if(j > 9)
{
j = 1;
i++;
}
if(i > 9) return true;
}
for(int p = 1; p <= 9; p++)
{
if(Game.Check_Conflicts(p, i, j)) //We are checking for conflicts
{
board[i][j] = p;
nextrow = i;
nextcol = j+1;
if(nextcol > 9)
{
nextcol = 1;
nextrow++;
}
if(nextcol == 1 && nextrow == 10) return true;
if(Game.Help_Solve(nextrow, nextcol)) return true;
}
}
board[i][j] = 0;
return false;
}