当前位置:网站首页>N皇后问题

N皇后问题

2022-06-25 16:36:00 jie3606

#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;
}
原网站

版权声明
本文为[jie3606]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_59803490/article/details/125353476