八皇后问题:在8×8格的国际象棋上摆放八个皇后,任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
将棋盘抽象为4 * 4到20 * 20大小的矩阵
输入样例:
请输入棋盘的大小(4 ~ 20):
4
输出样例:
Solution: 1
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0
Solution: 2
0 0 1 0
1 0 0 0
0 0 0 1
0 1 0 0
输入样例2:
请输入棋盘的大小(4 ~ 20):
8
输出样例2(部分)(共92种):
Solution: 91
0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0
Solution: 92
0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define MAX 20//棋盘大小为小于等于 20 * 20
//定义八皇后结构体
typedef struct queen {
int N;//棋盘大小
int matrix[MAX][MAX];//棋盘矩阵
int row[MAX];//每行皇后摆放的列号
int count;//


1万+

被折叠的 条评论
为什么被折叠?



