C和指针之数组编程练习8(8皇后问题)
【摘要】 1、问题
*在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击
*即任意两个皇后都不能处于同一行、同一列或同一斜线上,
*问有多少种摆法,并把所有合法的二维数组打印出来
2、代码实现
#include <stdio.h...
1、问题
*在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击
*即任意两个皇后都不能处于同一行、同一列或同一斜线上,
*问有多少种摆法,并把所有合法的二维数组打印出来
*即任意两个皇后都不能处于同一行、同一列或同一斜线上,
*问有多少种摆法,并把所有合法的二维数组打印出来
2、代码实现
-
#include <stdio.h>
-
#include <stdlib.h>
-
-
/**
-
*在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击
-
*即任意两个皇后都不能处于同一行、同一列或同一斜线上,
-
*问有多少种摆法,并把所有合法的二维数组打印出来
-
*/
-
-
#define M 8
-
-
int 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 (
文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。
原文链接:chenyu.blog.csdn.net/article/details/78536424
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)