Algorithm Gossip :八皇后问题

来源:互联网 发布:unity3d ugui虚拟摇杆 编辑:程序博客网 时间:2024/05/07 23:05
/*八皇后问题。*/#include <stdio.h>#include <stdlib.h>#define N 8int column[N+1];//同栏是否有皇后,1表示有int rup[2*N+1];//右上至左下是否有皇后int lup[2*N+1];//左上至右下是否有皇后int queen[N+1] = {0};int num;//解答编号void backtrack(int);//递回求解int main(void){int i;num = 0;for( i = 1;i <= N;i++ ){column[i] = 1;}for( i = 1;i <= 2*N;i++ ){rup[i] = lup[i] = 1;}backtrack(1);return 0;}void showAnswer(){int x,y;printf("\nanswer %d\n",++num);for( y = 1;y <= N;y++ ){for( x = 1;x <= N;x++ ){if(queen[y] == x){printf("Q");}else{printf(".");}}printf("\n");}}void backtrack(int i){int j;if( i > N ){showAnswer();}else{for( j = 1;j <= N;j++ ){if(column[j] == 1 && rup[i+j] == 1 &&lup[i-j+N] == 1){queen[i] = j;column[j] = rup[i+j] = lup[i-j+N] = 0;backtrack(i+1);column[j] = rup[i+j] = lup[i-j+N] = 1;}}}}

0 0
原创粉丝点击