【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")
相关推荐
染指11105 分钟前
157.Agent-LangGraph-工具(实现ReAct Agent模式)
开发语言·人工智能·python·langchain·agents
程序猿乐锅15 分钟前
【从0-1学习Python | 第九篇】继承
开发语言·后端·python·学习·fastapi
青少儿编程课堂15 分钟前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:位运算实战——二进制权限与最大异或解析
c++·python·算法·bfs·信息学竞赛
在世修行17 分钟前
智学文枢:理科分析引擎
python·ai·pyside·理科教学
青少儿编程课堂18 分钟前
2026蓝桥杯青少组图形化真题:校园飞机大战解析(全国青少年信息素养·电子学会图形化考级)
c++·python·算法·bfs·信息学竞赛
wdfk_prog21 分钟前
lwip教程 38:从 `lwipopts.h` 到 Port Contract——lwIP 裁剪、构建选择、OS Port 与 Network Port
java·开发语言
开开心心就好24 分钟前
证件照排版打印工具,免费可自定义尺寸
服务器·开发语言·算法·随机森林·pdf·音视频·散列表
方知我27 分钟前
01FastAPI基础入门
人工智能·python
我是高手高手高高手30 分钟前
宝塔 PHP多版本,切换PHP默认版本
开发语言·php
CodeYp201931 分钟前
第16讲:set 和 map 的使用
开发语言·c++·set·map