我在看“哑”解决N后问题,我通过一个while循环中的代码混淆: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主()我for循环有8在最内层的循环中,我将板的整个第一行初始化为1.然后我调用该函数,在调用该函数后,我将整个第一行重置为零。如果你们需要它,我可以显示int main。
对于由外循环for''控制的每一列'c','while'遍历数组''b''的第r列看一行,其中'b [r] [c]'是不是1.如果列的每一行都有1,它将访问内存越界。还有什么可说的?这是骑士之旅还是八皇后问题,还是跳棋? – 2013-02-13 01:17:14
找到谁命名这些变量并为我打耳光,努力。 – Aesthete 2013-02-13 01:20:54
八皇后。因此,由于程序已经将整个第一行初始化为1,因此我们从最右边开始,这个while循环基本上从b [0] [7]跳到b [1] [7]。 – Chase 2013-02-13 01:21:08