递归 N皇后问题 学习笔记
发布日期:2021-07-22 07:29:03 浏览次数:5 分类:技术文章

本文共 609 字,大约阅读时间需要 2 分钟。

#include 
#include
using namespace std;int N;int queenPos[100];void NQueen(int k) {
//在0 - k-1行皇后已经摆好的情况下,摆第k行及其后的皇后 int i; if (k == N) {
//N个皇后已经摆好 for (i = 0; i < N; i++) cout << queenPos[i] + 1 << " "; cout << endl; return ; } for (i = 0; i < N; i++) {
//逐个尝试第k个皇后的位置 int j; for (j = 0; j < k; j++) {
//和已摆好的k个皇后位置比较,看是否冲突 if (queenPos[j] == i || abs(queenPos[j] - i) == abs(k - j)); //斜对角根据它们行列差绝对值是否一样来判断 break; //冲突尝试下一个位置 } if (j == k) {
//当前位置i不冲突 queenPos[k] = i; NQueen(k + 1); } }}int main(){
cin >> N; NQueen(0); return 0;}

转载地址:https://blog.csdn.net/m0_45689014/article/details/114129226 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:逆波兰表达式求值 学习笔记
下一篇:牛客网 KY228 找位置

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月12日 00时37分50秒