八皇后问题 希望大家帮我改进一下
程序代码:
#include<stdio.h> void fun(int i,int j); static int b[8][8]; void main() { fun(0,0); } int knock(int i,int j) {int temp_i,temp_j,k; temp_i=i;temp_j=j; for(i=i-1;i>=0;i--) if(b[i][j]==1) return 1; for(i=temp_i-1,k=temp_j+1,j=temp_j-1;i>=0;i--,j--,k++) {if(j>=0&&b[i][j]==1) return 1; if(k<8&&b[i][k]==1) return 1; } return 0; } void cls(int i) {int j; for(;i<8;i++) { for(j=0;j<8;j++) b[i][j]=0; } } void print(void) {int i,j;static int n=1; printf("--------------------------\n第%d种\n",n++); for(j=0;j<8;j++) { for(i=0;i<8;i++) {if(b[i][j]==1) printf("* "); else printf("0 "); } printf("\n"); } printf("\n");// getchar(); } void fun(int i,int j) {if(i<8) { for(;j<8;j++) {cls(i); if(knock(i,j)==1) continue; b[i][j]=1; fun(i+1,0); } } else print(); }
希望大家给我点建议,谢谢!
[ 本帖最后由 饭桶 于 2011-11-16 23:38 编辑 ]