N皇后递归

简介: #includeusing namespace std;void NQueen( int k); int queenPos[1000];int N; int main(){ cin >> N; ...
#include<bits/stdc++.h>
using namespace std;
void NQueen( int k); 
int queenPos[1000];
int N; 
int main()
{   

    cin >> N; 
    NQueen(0);
    return 0;   
}
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) {   //符合条件 不冲突 
            queenPos[k] = i;    //将第K个皇后摆放在位置i
            NQueen(k+1); 
        } 
    }
}
目录
相关文章
|
5月前
|
存储 缓存 算法
动归和递归算法讲解
动归和递归算法讲解
|
6月前
|
Java Python
汉诺塔递归问题,递归思路详解
汉诺塔递归问题,递归思路详解
98 0
|
机器学习/深度学习
青蛙跳台阶(递归)
青蛙跳台阶(递归)
97 0
汉诺塔 递归问题
汉诺塔 递归问题
84 0
递归问题的实际运用:汉诺塔问题
递归问题的实际运用:汉诺塔问题
112 0
递归问题的实际运用:汉诺塔问题
|
C语言
【C】青蛙跳台阶和汉诺塔问题(递归)
【C】青蛙跳台阶和汉诺塔问题(递归)
125 0
【C】青蛙跳台阶和汉诺塔问题(递归)
【递归】青蛙跳台阶的变式题你还会吗?
【递归】青蛙跳台阶的变式题你还会吗?
123 0
【递归】青蛙跳台阶的变式题你还会吗?
递归—汉诺塔
汉诺塔是经典递归问题:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
196 0
递归—汉诺塔