八皇后问题初始思路python_8皇后问题(c++/python实现)

问题描述:在8*8的国际象棋盘上摆放8个皇后,使其不能互相攻击,即任何两个皇后都不能处于同一行、同一列或者同一斜线上,问有多少种摆法。

算法分析:

利用3个数组分表来标记冲突,数组a、b、c。

a数组代表列冲突,a[0]~a[7]代表0~7列,如果a[0]=1,则表示第0列已有皇后。

b数组带表主对角线冲突,为b[行-列+7],即b[0]~b[14]中如果为1,表示该主对角线有皇后(如下图)。

c数组带表从对角线冲突,为c[行+列],即c[0]~c[14]中如果为1,表示该从对角线有皇后(如下图)。

c++实现如下:

#include

using namespace std;

static char Queen[][];

static int a[];

static int b[];

static int c[];

static int iQueenNum=; //记录总的棋盘状态数

void qu(int i);//第i行

int main()

{

int iLine,iColumn;

for(iLine=;iLine

{

a[iLine]=;//列标记初始化,表示无列冲突

for(iColumn=;iColumn

{

Queen[iLine][

你可能感兴趣的:(八皇后问题初始思路python)