《蓝桥杯算法》N皇后问题
文章目录
源代码:
#include <iostream>
#include <cmath>
using namespace std;
int n;
int queen[1000]; //第i行的皇后应该放在第queen[i]列的位置
void nQueen(int k) //第k列的皇后安排好位置后, 安排第k+1的位置
{
if( k == n){
for(int i = 0; i < n; i++){
cout << queen[i] + 1 << " ";
}
cout << endl;
return;
}
for(int i = 0; i < n; i++){ //i为给第k行所安排的位置
int j ; //queen[j]为当前行皇后的位置
for( j =0; j < k; j++){
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);
return 0;
}