#include<iostream> #include<cmath> usingnamespace std; char Queenspos[100]={0};//记录皇后的位置 voidNQueen( int k, int n) { if( k == n) {//n行已经摆好,输出结果 int i; for (i = 0 ; i < n ;i ++)//输出n皇后的位置 { cout<<Queenspos[i]+1<< ' '; } cout << endl ; return ; } int i; for( i = 0; i < n ; i ++){//0~k-1行已经摆好,尝试第k行的列位置 int flag = true ; for ( int j = 0 ; j < k ; j ++) { if ( Queenspos[j] == i || abs(Queenspos[j] - i) == (abs(k - j)) ) {//不满足条件 flag = false ; break; } } if( flag ) { Queenspos[k] = i ; NQueen( k+1 , n) ;//满足条件,尝试下一行 } } } intmain() { int n; cin>>n;//n皇后 NQueen(0 , n); return0; }