能帮到你的话,就给个赞吧 ?
#include <iostream> //c++ 输入输出头文件
#include <cstdio> //c 输入输出头文件
#include <cmath> //标准数学函数库
using namespace std;
/*
判断每一行的每个位置
有合适的位置的话 遍历下一行
本行遍历完后 返回上一行
到 n 结束
*/
int n; //几个皇后
int b[100]; //保存记录 索引为行,值为列
void f(int k){ //遍历第k行
if(k==n){
for(int i=0;i<n;++i)
cout<<b[i]<<' ';
cout<<endl;
return ;
}
//遍历第k行
for(int j=0;j<n;++j){
int p;
//判断是否冲突
for(p=0;p<k;++p)
if(b[p]==j||abs(p-k)==abs(j-b[p])) //abs为绝对值函数
break;
//不冲突下一行
if(p==k){
b[k]=j;
f(k+1);
}
}
return ;
}
int main(void)
{
n=1;
f(0);
return 0;
}