#include<stdio.h>
#include<math.h>int x[100],j;int w;int a(int b,int c){ int n; n=b-c; if(n==0) return 0; if(n>0) return n; else return -n;}bool place(int k){ int i; for(i=1;i<k;i++) if(x[k]==x[i]||a(k,i)==a(x[k],x[i])) return false; return true;//判断真假,FALSE=0,TRUE=1}void queen(int n)//返回值为空
{
int i,k; for(i=1;i<=n;i++) x[i]=0; k=1; while(k>=1) { x[k]=x[k]+1; while(x[k]<=n&&!place(k)) x[k]=x[k]+1; if(x[k]<=n&&k==n) { for(i=1;i<=n;i++) { printf("第%d列%d ",i,x[i]); } printf("\n"); w=w+1; } else if(x[k]<=n&&k<n) { k=k+1; } else { x[k]=0; k=k-1; } }}int main()
{ int n; printf("皇后个数n:\n"); scanf("%d",&n); queen(n); printf("总数%d",w);}#include<stdio.h>
#include<math.h>int x[100],j;int w;int a(int b,int c){ int n; n=b-c; if(n==0) return 0; if(n>0) return n; else return -n;}bool place(int k){ int i; for(i=1;i<k;i++) if(x[k]==x[i]||a(k,i)==a(x[k],x[i])) return false; return true;}void queen(int n)
{
int i,k; for(i=1;i<=n;i++) x[i]=0; k=1; while(k>=1) { x[k]=x[k]+1; while(x[k]<=n&&!place(k)) x[k]=x[k]+1; if(x[k]<=n&&k==n) { for(i=1;i<=n;i++) { printf("第%d列%d ",i,x[i]); } printf("\n"); w=w+1; } else if(x[k]<=n&&k<n) { k=k+1; } else { x[k]=0; k=k-1; } }}int main()
{ int n; printf("皇后个数n:\n"); scanf("%d",&n); queen(n); printf("总数%d",w);}
我也不知道改写什么