1、问题
*在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击
*即任意两个皇后都不能处于同一行、同一列或同一斜线上,
*问有多少种摆法,并把所有合法的二维数组打印出来
*即任意两个皇后都不能处于同一行、同一列或同一斜线上,
*问有多少种摆法,并把所有合法的二维数组打印出来
2、代码实现
#include <stdio.h>
#include <stdlib.h>/***在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击*即任意两个皇后都不能处于同一行、同一列或同一斜线上,*问有多少种摆法,并把所有合法的二维数组打印出来*/#define M 8int matrix[M + 1][M + 1] = {0};//检查这行的皇后是否与上面的行里面的皇后相冲突
//返回0就是相冲突,返回1就是不冲突,参数i,j就是
//需要检验这个皇后的下标int is_legal(int (*matrix)[M + 1], int i, int j)
{for (int k = 1; k <= i - 1; k++){for (int l = 1; l <= M; l++){ //判断之前的皇后if (matrix[k][l] == 1){if (abs(i - k) == abs(j - l) || l == j)return 0;}}}return 1;
}//打印有能组成皇后的数组
void my_printf(int (