解题关键:如何避免两个皇后在同一列,同一列,同一对角上。
避免方法:
()同一行列避免:只需要两个状态数组(st[N])标记某一行或某一列是否被占用;
对角线避免(有正对角线和反对角线):
1.建立直角坐标系。
易知对角要45°要么是135°所以如下图:
2.变形公式:由公式可知b是确定两个方程是否相等的唯一条件,所以化简公式为:
正对角线:b = y - x;
反对角线:b = y + x;
所以判断某一个皇后的正对角线和反对角线的状态数组dia[y-x+n](n为需要放入棋盘的皇后的个数,这里为了避免数组下标出现负数情况,每个正对角线都偏移你,相当于没变。)undia[y+x]。