#include<iostream>
#include<cmath>
using namespace std;
int N;
int QueuePos[100];
void nQueue(int n) {//在第1~n-1个皇后已经摆好的情况下,确定第n个皇后的位置
if (n == N) {
for (int i = 0; i < N; i++) {
cout << QueuePos[i] + 1 << " ";
}
cout << endl;
return;
}
//else
for (int i = 0; i < N; i++) {//逐渐尝试第k个皇后的位置
int j = 0;
for (j = 0; j < n; j++) {//已经摆好的皇后的
if (QueuePos[j] == i || (abs(QueuePos[j] - i) == abs(n - j))) {
break;
}
}
if (j == n) //for循环不是由于break退出,表明第n个皇后的位置和前j个皇后的位置不冲突
{
QueuePos[n] = i;
nQueue(n + 1);
}
}
}
int main() {
cin >> N;
nQueue(0);
return 0;
}
N皇后问题
最新推荐文章于 2024-07-25 21:43:46 发布