八皇后问题(一)

网友投稿 976 2025-04-02

问题描述:


要在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小时内删除侵权内容。

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

上一篇:excel2021怎么取消字体颜色?excel2021取消字体颜色的方法
下一篇:mysql进阶(二十八)MySQL GRANT REVOKE用法
相关文章