关于八皇后问题
植魂人 2017-11-02 10:14:05 看别人写的八皇后问题的枚举法解决,但是颜色标注出来的有些看不懂,不是定义的数组是QueenArr[8]嘛?为什么他的i<=8且还有QueenArr[i]的形式,那不是数组越界了吗?望哪位有心人帮忙解答下
bool isFight(int QueenArr[])
{
for (int i = 1; i <= 8; i++)
{
for (int j = 0;j <= i - 1;j++)
{
if (QueenArr[i] == QueenArr[j])//说明在同一列,返回有争斗
{
return true;
}
if (abs(QueenArr[i] - QueenArr[j]) == abs(i - j))//45度角是否有争斗
{
return true;
}
}
}
return false;
}
void enumQueenPosition(int QueenArr[], int &nSolution)
{
for (QueenArr[0] = 0; QueenArr[0] < 8; QueenArr[0]++)
for (QueenArr[1] = 0; QueenArr[1] < 8; QueenArr[1]++)
for (QueenArr[2] = 0; QueenArr[2] < 8; QueenArr[2]++)
for (QueenArr[3] = 0; QueenArr[3] < 8; QueenArr[3]++)
for (QueenArr[4] = 0; QueenArr[4] < 8; QueenArr[4]++)
for (QueenArr[5] = 0; QueenArr[5] < 8; QueenArr[5]++)
for (QueenArr[6] = 0; QueenArr[6] < 8; QueenArr[6]++)
for (QueenArr[7] = 0; QueenArr[7] < 8; QueenArr[7]++)
{
if (isFight(QueenArr) == true)
{
continue;
}
else
{
nSolution++;
ShowQueen(QueenArr, 8, nSolution);
}
}
}