算法描述:
对于每一个放置点而言,它需要考虑四个方向上是否已经存在皇后。分别是行列,45度斜线和135度斜线。
行:每一行只放一个皇后,直到我们把最后一个皇后放到最后一行的合适位置,则算法结束。
列:列相同的约束条件,只需判断j是否相等即可。
45度斜线和135度斜线:约束条件——当前棋子和已放置好的棋子不能存在行数差的绝对值等于列数差的绝对值的情况,若存在则说明两个棋子在同一条斜线上
代码:
#include <iostream>
#include <queue>
using namespace std;
class Node
{
public:
Node(int n) : t(0), n(n)
{
pos = new int[n + 1];
for (int i = 0; i <= n; ++i)
{
pos[i] = 0;
}