八皇后
来源:互联网 发布:windows键盘键位修改 编辑:程序博客网 时间:2024/04/27 22:21
#include <iostream>using namespace std;int vol[8];//存放可行情况下 每行的列号 列从0到7int number;//存放可行的数目void Queen(int,int,bool (*)[8]);int main(){bool empty[8][8]={0};Queen(0,7,empty);cout<<number;system("pause");return 0; }void Queen(int line, int N, bool empty[][8]) // n乘n的棋盘 从 line行开始 empty(i,j) =0表示第i行第j列可以放皇后 i从0到7 j从0到7{ if (line>7){return;}int i = line,j,m,n;bool hasposition =false;for(j = 0;j < 8;j++){if (empty[i][j] == 0){bool a[8][8];for(int k =0;k<8;k++)for(int p = 0;p<8;p++)a[k][p] = empty[k][p]; vol[line] = j; hasposition = true;a[i][j] = 1; for(m = i,n =j; m<8 && n<8; m++,n++){ a[m][n] = 1; }for(m = i,n =j; m<8 && n>-1; m++,n--){a[m][n] = 1; }for(m = i+1; m<8; m++){ a[m][j] = 1;} Queen(line + 1,N,a);}if( (line == N) && hasposition){ for(n = 0;n<8 ;n++)cout<<vol[n];cout<<endl;number++;return;}} }