- #include<stdio.h>
- #include<math.h>
- int x[20],y[20],z[40],m[40],n,t=0,i,j,k;
- void prin()
- {
- int k;
- t=t+1;
- printf("%d ",t);
- for(k=1;k<=n;k++)
- printf("%d ",x[k]);
- printf("\\n");
- }
- void f(int i)
- {
- int j;
- for(j=1;j<=n;j++)
- if((y[i]==0)&&z[i+j]==0&&m[i-j+n]==0)
- {
- x[i]=j;
- y[j]=1;
- z[i+j]=1;
- m[i-j+n]=1;
- if(i<n)
- f(i+1);
- else
- prin();
- y[i]=0;
- z[i+j]=0;
- m[i-j+n]=0;
- }
- }
- int main(void)
- {
- int i;
- printf("请输入皇后的个数:");
- scanf("%d",&n);
- for(i=1;i<=n;i++)
- {
- y[i]=0;
- z[i]=0;
- z[n+i]=0;
- m[i]=0;
- m[n+i]=0;
- f(64);
- }
- //f();
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/2105201512632.html
来源: http://www.codesnippet.cn/detail/2105201512632.html