八皇后问题
#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种\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);
end = time(NULL);
printf("\n程序运行所用时间%d秒\n",end-start);
} //本文出自 “阿凡达” 博客,转载请与作者联系!
积跬步以致千里,积小流以成江海。
2016年5月之前的博文发布于51cto,链接地址:shamrock.blog.51cto.com
2016年5月之后博文发布与cnblogs上。
Github地址 https://github.com/umgsai
Keep moving~!!!
2016年5月之前的博文发布于51cto,链接地址:shamrock.blog.51cto.com
2016年5月之后博文发布与cnblogs上。
Github地址 https://github.com/umgsai
Keep moving~!!!

浙公网安备 33010602011771号