欢迎关注笔者,你的支持是持续更博的最大动力
问题描述
N皇后:
输入整数n, 要求n个国际象棋的皇后,摆在n × \times ×n的棋盘上,互相不能攻击,输出全部方案。
注:同一列、同一行、同对角线皇后会相互攻击。
思路
递归
一个皇后一行,列不同,有n列,每个皇后有n个选择。
摆第k个皇后的时候,逐列查看前面k-1个皇后和自己是不是同一列、同一对角线。如果当前列没有冲突,可放在当前列。调用函数摆放下一个皇后。
递归出口:所有皇后都摆放好了。
代码
#include <iostream>
using namespace std;
#include <cmath>
int N; //N个皇后要摆
int queenPos[100]; //queenPos[i]:第i行皇后放在哪一列
void