八皇后问题(一)

网友投稿 794 2022-05-28

问题描述:

要在8*8的国际象棋棋盘中放8个皇后,使任意两个皇后都不能互相吃掉。规则是皇后能吃掉同一行、同一列、同一对角线的棋子。如下图即是两种方案:

思路:

比如我们搞个数组,数组的下表表示多少行,然后数值表示多少列,比如a[4] = 5,意思就代表第四行,第五列

首先看不再同一行、同一列、同一对问题,我们数组依次增大,所以不会同行,至于同列,我们可以推出a[i] = a[j]说明同列

同一对角线我们知道是等腰直角三角形,我们可以退出行之差和列之差会相等,也就是说fabs(a[i] - a[j]) = fabs(i - j);

注意这里的fabs函数是求绝对值

然后我们搜索,如果遇到当前不满足条件的情况下,就回退下,知道满足条件为止,也就是说的回溯思想

这里我用最简单最好理解的代码实现一次,后面还会用简单的代码和递归实现

代码实现:

#include

#include

int a[512] = {1};

int check_

八皇后问题(一)

数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Xilinx Kintex-7系列FPGA的开发板SATA/PCIe接口
下一篇:【直播资讯-互动有礼】融媒背景下,传统广电媒体如何更快完成数字化转型?看直播赢记忆枕、背包、折叠键盘、码豆等超值心动奖品!
相关文章