#include "stdio.h"
#include "time.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() {
clock_t start;
clock_t end;
start =time(NULL);
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种 ",count); printf("第%d种 ",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," "); printf(" "); } fprintf(fw," "); printf(" "); } init(); } printf("%d ",count); fprintf(fw,"一共%d种 ",count);
end = time(NULL);
printf("
程序运行所用时间%d秒
",end-start);
} //本文出自 “阿凡达” 博客,转载请与作者联系!