八皇后问题初始思路python_算法-手动推演八皇后问题-python3递归实现

0.摘要

本文介绍八皇后问题的解决思路,并使用python3实现。

1.问题阐述

目标: 8×8 的国际象棋棋盘上放置八个皇后

规则:任两个皇后都不能处于同一条横行、纵行或斜线上

显然可知:

由于任意皇后不能同行,所以每一行最多放置一位皇后;

由于行数=皇后数,所以每一行至少放置一位皇后

故:正确的放置方式,一定是每行有且只有一位皇后(1)

为了方便读者了解规则,我们先以4皇后问题为例,推演出可行的解题思路。

本文以图示的方式进行说明,当一个皇后确定位置后,她的同行、同列、同斜线方向不可以再放置其他皇后。

不能放置皇后的位置,我们用灰色表示。

Z7F3yi.png

step1:放置第一位皇后:现将第一为皇后放在第一列,那么其同一条横行、纵行或斜线位置将不能再放置其她皇后;

step2:放置第二位皇后:第二位皇后只可以放置在第三列或第四列,先尝试放置在第三列;

step3:放置第三位皇后:由于第三行所有位置都无法放置第三位皇后,这与上文(1)出给出的结论相悖,故该放置方式不合理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值