求出n皇后问题的全部解
递归算法——利用递归消除多重循环的思想
void NQueen(int k); //表示从第k行开始放置皇后,失败则什么都不做,回退到上一步,成功则递归
完整代码:
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int n;
int queenPos[100];
void NQueen(int k){
int i;
if(k == n){
for(i=0;i<n;i++)
cout << queenPos[i] + 1 << " ";
cout << endl;
return;
}
for(i=0;i<n;i++){
int j;
for(j=0;j<k;j++){
if(queenPos[j] == i || abs(queenPos[j]-i) == abs(j-k))
break;
}
if(j == k){
queenPos[k] = i;
NQueen(k+1);
}
}
}
int main(){
cin >> n;
NQueen(0);
return 0;
}