- #include "stdio.h"
- #define num 8
- int a[num][num],count=0;
- FILE *fw;
- int judge()
- {
- int aa=0,bb=0;
- int i,j,num1=0;
- 横排不用判断
- for (i=0;i<num;i++)//判断竖排
- {
- for (j=0;j<num;j++)
- {
- if (a[j][i]==1)
- num1++;
- }
- if(num1>1)
- return 0;
- else
- num1=0;
- }
- num1=0;
- for (i=0;i<num;i++)//第一排向下
- {
- num1=0;
- aa=0;
- bb=i;
- while(bb>=0)//斜向左下
- {
- if(a[aa][bb]==1)
- num1++;
- if(num1>1)
- return 0;
- aa++;
- bb--;
- }
- aa=0;
- bb=i;
- num1=0;
- while(bb<num)//斜向右下
- {
- if(a[aa][bb]==1)
- num1++;
- if(num1>1)
- return 0;
- aa++;
- bb++;
- }
- }
- ///
- num1=0;
- for(i=0;i<num;i++)//最后一排向上
- {
- num1=0;
- aa=num-1;
- bb=i;
- while(bb<num)//斜向右上
- {
- if(a[aa][bb]==1)
- num1++;
- if(num1>1)
- return 0;
- aa--;
- bb++;
- }
- aa=num-1;
- bb=i;
- num1=0;
- while(bb>=0)//斜向左上
- {
- if(a[aa][bb]==1)
- num1++;
- if(num1>1)
- return 0;
- aa--;
- bb--;
- }
- }
- return 1;
- }
- void init()
- {
- int i,j;
- for (i=0;i<num;i++)
- for (j=0;j<num;j++)
- a[i][j]=0;
- }
- void main()
- {
- fw = fopen("b.txt","a");//以追加方式写入
- int i,j,c[num];
- init();
- for (c[0]=0;c[0]<num;c[0]++)
- for (c[1]=0;c[1]<num;c[1]++)
- for (c[2]=0;c[2]<num;c[2]++)
- for (c[3]=0;c[3]<num;c[3]++)
- for (c[4]=0;c[4]<num;c[4]++)
- for (c[5]=0;c[5]<num;c[5]++)
- for (c[6]=0;c[6]<num;c[6]++)
- for (c[7]=0;c[7]<num;c[7]++)
- {
- a[0][c[0]]=1;
- a[1][c[1]]=1;
- a[2][c[2]]=1;
- a[3][c[3]]=1;
- a[4][c[4]]=1;
- a[5][c[5]]=1;
- a[6][c[6]]=1;
- a[7][c[7]]=1;
- if(judge()==1)
- {
- count++;
- fprintf(fw,"第%d种\n",count);
- printf("第%d种\n",count);
- for(i=0;i<num;i++)
- {
- for (j=0;j<num;j++)
- {
- fprintf(fw,"%d ",a[i][j]);
- printf("%d ",a[i][j]);
- }
- fprintf(fw,"\n");
- printf("\n");
- }
- fprintf(fw,"\n");
- printf("\n");
- }
- init();
- }
- printf("%d\n",count);
- fprintf(fw,"一共%d种\n",count);
- }