题解 | #八皇后#
八皇后
https://www.nowcoder.com/practice/fbf428ecb0574236a2a0295e1fa854cb
#include <stdio.h>
#include <string.h>
int q[9][9]={0};
int ans=0;
char que[93][9];
int t[9]={0};
int Place(int i,int n){
for(int j=1;j<n;j++){
if(t[j]==i) return 0;
}
for(int j=1;j<n;j++){
if((t[j]-j)==(i-n)||(t[j]+j)==(n+i))
return 0;
}
return 1;
}
void queen(int n){
if(n>8){
ans++;
for(int i=1;i<9;i++){
que[ans][i]=t[i]+'0';
}
return;
}
else{
for(int i=1;i<=8;i++){
if(Place(i,n)){
//printf("%d %d\n",n,i);
q[n][i]=1;
t[n]=i;
queen(n+1);
}
}
}
}
int main() {
int x;
//int i=0;
//char q[93][9]={'\0'};
queen(1);
scanf("%d\n",&x);
for(int i=1;i<=8;i++){
printf("%c",que[x][i]);
}
printf("\n");
//printf("%d\n",ans);
/*for(int i=0;i<=ans;i++){
for(int j=1;j<=8;j++){
printf("%c ",que[i][j]);
}
printf("\n");
}*/
}
查看26道真题和解析