标签:
八皇后的问题和马踏棋盘的思路是一样,都用到了回溯的思想。代码也都差不多。这个里面最精彩的地方用4个一位数组表示了这个棋盘。这个里面总共有92组解
代码展示
#include<stdio.h> #include<stdlib.h> int col[8]={0}; int right[15]={0}; int left[15]={0}; int Queen[8]; int cnt; //全局变量 void print(); void insertQueen(int ); void insertQueen(int i) { for(int j=0;j<8;j++) { if(col[j]==0&&right[i+j]==0&&left[i-j+7]==0) //判断是否可以放 { Queen[i]=j; //放皇后 col[j]=1; right[i+j]=1; left[i-j+7]=1; if(i<7) insertQueen(i+1); //递归 else { print(); } col[j]=0; //清除标记,查找下一组的解 right[i+j]=0; left[i-j+7]=0; } } } void print() { int i,j; printf("输出第%d组解\n",++cnt); for(i=0;i<8;i++) { for(j=0;j<8;j++) { if(Queen[i]==j) printf("■"); else printf("□"); } printf("\n"); } } int main() { insertQueen(0); return 0; }
标签:
原文地址:http://blog.csdn.net/lotluck/article/details/43153965