题解 | #八皇后#
八皇后
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"); }*/ }