![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h> #include<stdlib.h> const int N=20; int q[N]; int cont=0; void print(int n) { cont++; int i; printf("NO.%d:",cont); for(i=1;i<=n;i++) printf("%d",q[i]); printf("\n"); } int find(int i,int k) { int j; j=1; while(j<k) { if((q[j]==i)||(abs(q[j]-i)==abs(j-k))) return 0; j++; } return 1; } void place(int k,int n) { if(k>n) print(n); else for(int i=1;i<=n;i++) if(find(i,k)) { q[k]=i; place(k+1,n); } } void main() { int n; printf("huanghouwenti(n<20)n="); scanf("%d",&n); if(n>20) printf("n is too big to do!\n"); else { printf("%d quuen matter's jieguo:\n",n); place(1,n); printf("\n"); } }