八皇后问题 1
问题描述 设在初始状态下在国际象棋的棋盘上没有任何棋子(这里的棋子指皇后棋子)
然后顺序在第1 行,第2 行……第8 行上布放棋子
在每一行中共有8 个可选择的位置,但在任一时刻棋盘的合法布局都必须满足 3 个限制条件(1)任意两个棋子不得放在同一行(2)任意两个棋子不得放在同一列上(3)任意棋子不得放在同一正斜线和反斜线上
基本要求 编写求解并输出此问题的一个合法布局的程序
3、实现提示: 在第i 行布放棋子时,从第1 列到第8 列逐列考察
当在第i 行第j 列布放棋子时,需要考察布放棋子后在行方向、列方向、正斜线和反斜线方向上的布局状态是否合法,若该棋子布放合法,再递归求解在第i+1 行布放棋子;若该棋子布放不合法,移去这个棋子,恢复布放该棋子前的状态,然后再试探在第i 行第j+1 列布放棋子
4 程序代码 #inclu de #inclu de static char Qu een[8][8]; static int a[8]; static int b[15]; static int c[15]; static int Qu eenNu m=0; //记录总的棋盘状态数 v oid qu (int i); //参数 i 代表行 int main() { int Line,Column; //棋盘初始化,空格为*,放置皇后的地方为@ for(Line=0;Line