n皇后问题

 

 

 

 

//n皇后问题递归
#include <iostream>
#include <cmath>
using namespace std;
int queen[100];
int n;
void Nqueen(int k){
    int i;
    if(k==n){//n个皇后已经摆好 
        for(i=0;i<n;i++)
        {
            cout<<queen[i]+1<<" ";
        }
        cout<<endl;
        return;
    }
    
        for(i=0;i<n;i++){//逐个尝试第k行皇后的位置 
            int j=0;
            for(j=0;j<k;j++)//和已经摆好的前k行皇后比较 
            {
                if(queen[j]==i||abs(queen[j]-i)==abs(k-j))
                {break;}
            }
            if(j==k)//如果没有冲突 
            {
                queen[k]=i;
                Nqueen(k+1);
            }
        }
    
} 
int main(){

    cin>>n;
    Nqueen(0);
}

 

 

 

posted @ 2021-12-11 22:05  坤k  阅读(20)  评论(0)    收藏  举报