【Python数据结构与算法】递归----N皇后问题

题目:N皇后问题

描述

国际象棋的棋盘是由8×8共64个方格构成,棋子放在方格里面。如果两个皇后棋子在同一行、同一列,或者在某个正方形的对角线上,那么这两个皇后就会互相攻击。请在棋盘上摆放8个皇后,使得它们都不会互相攻击。这是经典的8皇后问题。

现在要解决N皇后问题:将N个皇后摆放在一个N行N列的国际象棋棋盘上,要求任何两个皇后不能互相攻击。输入皇后数N(1<=N<=9),输出所有的摆法。无解输出"NO ANSWER"。行列号都从0开始算。

输入

一个整数N,表示要把N个皇后摆放在一个N行N列的国际象棋棋盘上
输出

所有的摆放放案。每个方案一行,依次是第0行皇后位置、第1行皇后位置...第N-1行皇后位置。

多种方案输出顺序如下:优先输出第0行皇后列号小的方案。如果两个方案第0行皇后列号一致,那么优先输出第1行皇后列号小的方案...以此类推

样例输入

python 复制代码
4

样例输出

python 复制代码
1 3 0 2 
2 0 3 1 

AC代码

python 复制代码
result = [0] * 12 	

def isOk(n,pos):	
    for i in range(n):
        if result[i] == pos or abs(i-n) == abs(result[i] - pos):
            return False
    return True
def queen(N,i):
                  
    if i == N: 
        for k in range(N):
            print(result[k], end=" ")
        print("")
        return True
    succeed = False
    for k in range(N):    
        if isOk(i,k):      
            result[i] = k  
            succeed = queen(N,i+1) or succeed   
    return succeed
N = int(input())
if not queen(N,0):
    print("NO ANSWER")
相关推荐
mr_LuoWei20092 分钟前
python工具:python代码知识库笔记
数据库·python
weixin_395448912 分钟前
cursor日志
人工智能·python·机器学习
踢足球09293 分钟前
寒假打卡:2026-2-7
java·开发语言·javascript
天天爱吃肉821820 分钟前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
薛定谔的猫喵喵27 分钟前
基于PyQt5的视频答题竞赛系统设计与实现
开发语言·qt·音视频
岱宗夫up33 分钟前
Python 数据分析入门
开发语言·python·数据分析
码界筑梦坊34 分钟前
325-基于Python的校园卡消费行为数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
asheuojj37 分钟前
2026年GEO优化获客效果评估指南:如何精准衡量TOP5关
大数据·人工智能·python
多恩Stone38 分钟前
【RoPE】Flux 中的 Image Tokenization
开发语言·人工智能·python
李日灐40 分钟前
C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
开发语言·数据结构·c++·后端·面试·红黑树·自平衡二叉搜索树