八皇后问题 C语言递归算法程序.doc
#include<stdio.h>#include<math.h>const int NUM=4;/四皇后问题(NUM=4)static int count=0;void output(int arrayNUM);/四皇后分布输出int judge(int arrayNUM,int row,int column);/判定函数void search(int arrayNUM,int row);/搜索函数int main() int i,j; int boxNUMNUM; for(i=0;i<NUM;i+) for(j=0;j<NUM;j+) boxij=0; /output(box); search(box,0); printf("四皇后分布共有 %d 种。n",count); return 0;void output(int arrayNUM) int i,j; for(i=0;i<NUM;i+) for(j=0;j<NUM;j+) printf("%d ",*(*(array+i)+j); printf("n"); int judge(int arrayNUM,int row,int column) int i,j; for(i=0;i<row;i+) for(j=0;j<NUM;j+) if(arrayij=1) if(j=column) return 0;/判断是否在同一列 if(abs(row-i)=abs(column-j) return 0;/判断是否在同一斜线上 return 1;void search(int arrayNUM,int row) int j; /for(i=0;i<NUM;j+) / for(j=0;j<NUM;j+) if(!judge(array,row,j) /printf("%d ",judge(array,row,j); continue; arrayrowj=1; if(row=NUM-1) /arrayrowj=1; count+; printf("四皇后分布图: %dn",count); output(array); arrayrowj=0; continue; else search(array,row+1); arrayrowj=0; / return;