鱼C论坛

 找回密码
 立即注册
查看: 2576|回复: 34

[技术交流] 经典八皇后问题(python)

[复制链接]
发表于 2023-5-24 23:01:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 yinda_peng 于 2023-5-24 23:04 编辑

八皇后问题(英文:Eight queens),是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。
问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,有多种计算机语言可以编程解决此问题。
def solveNQueens(n):
    def DFS(queens, xy_dif, xy_sum):
        p = len(queens)
        if p == n:
            result.append(queens)
            return None
        for q in range(n):
            if q not in queens and p-q not in xy_dif and p+q not in xy_sum: 
                DFS(queens+[q], xy_dif+[p-q], xy_sum+[p+q]) 
    result = []
    DFS([], [], [])
    return [[ "."*i + "Q" + "."*(n-i-1) for i in sol] for sol in result]#列表推导式创建二维列表


n = int(input("请输入n的值:"))
count = 0
for solution in solveNQueens(n):
    print('\n'.join(solution))
    count += 1
    print()#空行分隔
print("总共有{}个解".format(count))


我之前把自己在知乎的一篇有关代数的文章搬过来了,有兴趣的朋友可以看看https://fishc.com.cn/thread-228674-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-24 23:07:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-24 23:10:35 From FishC Mobile | 显示全部楼层
来了来了,比c的代码简单好多啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-24 23:11:20 | 显示全部楼层
夏季的春秋 发表于 2023-5-24 23:10
来了来了,比c的代码简单好多啊

我也有C的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-24 23:11:51 | 显示全部楼层
夏季的春秋 发表于 2023-5-24 23:10
来了来了,比c的代码简单好多啊

不过是抄书上的hhh
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-24 23:12:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-24 23:13:00 | 显示全部楼层

回帖奖励 +3 鱼币

yinda_peng 发表于 2023-5-24 23:07
@夏季的春秋 @Judie @元豪 @Threebody1 来康康

Threebody1是我小号,别叫他
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-24 23:13:37 | 显示全部楼层

回帖奖励 +3 鱼币

歌者文明清理员 发表于 2023-5-24 23:13
Threebody1是我小号,别叫他

是谁在诋毁我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-24 23:14:03 | 显示全部楼层
歌者文明清理员 发表于 2023-5-24 23:13
Threebody1是我小号,别叫他

因为没加你大号,现在加你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-24 23:15:45 | 显示全部楼层

精神分裂症
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-24 23:29:56 From FishC Mobile | 显示全部楼层

回帖奖励 +3 鱼币

币啊,别绝缘啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-24 23:45:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-25 04:50:57 | 显示全部楼层

回帖奖励 +3 鱼币

interesting question!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-25 05:24:04 From FishC Mobile | 显示全部楼层
递归越简单,越难理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-25 07:29:20 | 显示全部楼层

回帖奖励 +3 鱼币



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-25 08:22:33 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-25 09:06:10 | 显示全部楼层

回帖奖励 +3 鱼币

看一看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-25 18:29:05 | 显示全部楼层

回帖奖励 +3 鱼币

学习深度优先搜索算法时学习的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-25 19:46:36 | 显示全部楼层

回帖奖励 +3 鱼币

Python,有意思有意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-28 16:35:32 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 22:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表