n表示横坐标
chess[n]表示纵坐标
对角线是就是斜率为1或-1的直线
chess[n]==chess[i]是纵坐标相等
chess[n]==chess[i]+(n-i)||chess[n]==chess[i]-(n-i)
即(chess[n]-chess[i])/(n-i)==1或-1
即在同一对角线上
当n=i(即横坐标相等)也满足
综上
这一条件排除了同行同列和同对角线的情况
八皇后的定义是不能同行同列和同对角线上出现皇后。
for(i=1;i<=n-1;i++)
{
if(chess[n]==chess[i]+(n-i)||
chess[n]==chess[i]-(n-i)||
chess[n]==chess[i])
return 0;
}
这个循环中,对这当前放置的棋子的上面所说的三种情况的所有可能出现不合理放置的位置进行枚举检测,只要发现冲突,就返回一个0直。
该if语句中,一个三个表达式相连的或语句,对应了三种情况。