每个皇后不能在同一行,列,斜线
thinking:深搜,做标记判断是否能走,能走则走再找下一行的每一列看哪一列能走
代码:
#include <iostream>
using namespace std;
bool map1[500][500];
int n;
void print(){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
cout << map1[i][j];
cout << endl;
}
cout << endl;
}
int fun(int a){
if(a>n)print();
else{
for(int i=1;i<=n;i++){
int f1=0;
for(int j=a-1;j>0;j--){
if(map1[j][i]==1||(map1[j][i-(a-j)]==1&&i-a+j>0)||(map1[j][i+(a-j)]==1&&i-a+j<=n))f1=1;
}
if(f1==0){
map1[a][i]=1;
fun(a+1);
}
map1[a][i]=0;
}
}
}
int main(){
cin >> n;
fun(1);
}