我正在研究 N 皇后问题的“愚蠢”解决方案,我对代码中的 while 循环感到困惑:
bool check(int b[8][8])
{
for(int c = 7; c >= 0; c--)
{
int r = 0;
while(b[r][c] != 1 ) //this is the while loop I was talking about
{
r++;
} //end while loop
for(int i = 1; i <= c; i++)
{
if(b[r][c-i] == 1)
return false;
else if ((r-i)>=0 && b[r-i][c-i] == 1)
return false;
else if ((r+i)<=7 && b[r+i][c-i] == 1)
return false;
}
}
return true;
}
在 int main() 中,我有 8 个 for 循环,在最里面的循环中,我将板的整个第一行初始化为 1。然后我调用该函数,在调用该函数后,我将整个第一行重置为零。如果你们需要,我可以显示 int main。