N皇后问题(python)

描述:

给定一个棋盘,求可以在棋盘上放置n个皇后的方案。对于放置皇后的位置,要求同一行同一列只能放置一个皇后。同时,斜向的45度方向也只能放置一个皇后。

复制代码
#N皇后问题
def isValid(r,c,grid,n):
    #检查列
    for i in range(r):
        if grid[i][c]=='Q':
            return False
    #检查左斜线
    i=r-1
    j=c-1
    while i>=0 and j>=0:
        if grid[i][j]=='Q':
            return False
        i-=1
        j-=1
    #检查右斜线
    k=r-1
    p=c+1
    while k>=0 and p<n:
        if grid[k][p]=='Q':
            return False
        k-=1
        p+=1
    return True
def Queens(n):
    #先构建棋盘
    grid=[['.'for _ in range(n)]for _ in range(n)]
    res=[]
    def dfs(row):
        if row==n:
            #收集答案
            res.append(["".join(r) for r in grid])
        for i in range(n):
            if isValid(row,i,grid,n): #当前位置是否能放置皇后
                grid[row][i]='Q'
                dfs(row+1)
                grid[row][i]='.'
    dfs(0)
    print(res)
    return res
def main():
    n=int(input())
    Queens(n)
if __name__=="__main__":
    main()
相关推荐
meilindehuzi_a几秒前
深入浅出数据结构:Python 字典(Dict)与集合(Set)的哈希表底层全链路追踪
数据结构·python·散列表
Lucas凉皮5 分钟前
20243408 2025-2026-2 《Python程序设计》综合实践报告
python·实验报告
键盘上的猫头鹰16 分钟前
【MySQL 教程(八)】索引、事务、用户管理、导入导出与分页查询
数据库·python·mysql
薛定谔的猫-菜鸟程序员1 小时前
2小时智能体开发一个智能体?我用CodeArts Agent 和 AtomCode 开发了一个适老化智能体。
人工智能·python·agent
bigfootyazi2 小时前
python爬虫-基本库-urllib库(常用速查)
开发语言·爬虫·python
瑶总迷弟2 小时前
使用 mis-tei 在昇腾310P上部署 bge-m3模型
pytorch·python·华为·语言模型·自然语言处理·cnn·unix
belong_my_offer2 小时前
认识到精通函数
开发语言·python
卡次卡次13 小时前
vibecoding起步注意点:插件、Skills、MCP、Hooks
服务器·数据库·python·oracle
我的xiaodoujiao4 小时前
API 接口自动化测试详细图文教程学习系列24--如何用Pytest去设计接口测试用例并执行
python·学习·测试工具·pytest
zhangfeng11334 小时前
ai 模型加密,强化版终极防盗方案 支持烧录的显卡列表
人工智能·pytorch·python