#include <iostream>
#include <cstring>
using namespace std;
int queen( int col[9],int start){ //数组的下标代表列,col[i]的值代表在该列放的皇后所在的行数.
if(start == 9){
for(int j = 1; j <9; j++)cout << col[j] ;
cout << endl;
return 0;//假如正常进行到第八列, 就输出数组;
}
for(int i =start; i <9; i ++){
for(int k = 1; k <9; k++){
bool flag = true;
col[i] = k;//给第i列的第k行放上皇后;
for(int j = 1; j < 9;j++){
if (i == j || col[j] == 0) continue;//不与同一个格子、没有放皇后的格子;进行比较
if(col[j] == col[i]|| i+col[i] == j + col[j] || i- col[i] == j-col[j]) {//检测是否有同行、同对角线的皇后
flag = false;col[i] = 0;break;/*如果有问题,flag输出false,跳出循环
如果没有,flag为true;尝试在下一列放置皇后*/
}
}
if(flag){
if(!col[i]) return 0;//如果flag为true,而且在该列放置了皇后,就继续对下一列进行放置操作;如果未放置,说明此时无解,跳出本层递归;
queen(col,start+1);
}
}
}
}
int main(){
int queens[9] = {0};
queen(queens,1);
}
以上,输出了很多很多个数字..