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()
相关推荐
jyOverQ17 小时前
我写了一个 CSDN Markdown 图片助手:告别本地图片逐张上传
python·工具·csdn
刘马想放假20 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
2601_9679873721 小时前
python判断变量名不要调用任何函数实现
python·函数·语法·判断·变量名
卷无止境21 小时前
SALib敏感性分析的python库学习笔记
后端·python
duansamve1 天前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
特立独行的猫A1 天前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python
特立独行的猫A1 天前
cj-tauri vs Rust/Tauri 同款播放器实测:编译 21 秒 vs 11 分钟,磁盘 12 MB vs 1.2 GB
java·后端·python
duansamve1 天前
详解Flask中Session和Cookie
python·flask
威哥爱编程1 天前
模拟面试智能体开发实战 04:面试聊到哪算哪?用状态机把整场面试编排起来
python·agent·harmonyos
威哥爱编程1 天前
模拟面试智能体开发实战 03:AI 面试官太客气?人设 Prompt 让它像个真考官
python·agent·harmonyos