蓝桥杯 Python 练习题 2n皇后(未解决)

本文介绍了八皇后问题及其在蓝桥杯竞赛中的应用。作者分享了自己尝试解决此问题的经历,包括查阅资料、理解递归和map函数,并展示了错误的代码实现。虽然目前还未找到正确答案,但作者的思路和过程对于初学者来说具有参考价值。
摘要由CSDN通过智能技术生成

题目 1460: 蓝桥杯基础练习VIP-2n皇后问题

时间限制: 1Sec 内存限制: 128MB 提交: 2016 解决: 1003

题目描述

给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。

输入

输入的第一行为一个整数n,表示棋盘的大小。 n小于等于8

接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。 

输出

输出一个整数,表示总共有多少种放法。

样例输入复制

4
1 1 1 1 
1 1 1 1 
1 1 1 1 
1 1 1 1 

样例输出复制

2

这个题,真是超出了我的能力范围了


首先先解决n皇后问题

两种实现+详细图解 51. N 皇后 - N 皇后 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/n-queens/solution/liang-chong-shi-xian-xiang-xi-tu-jie-51-n-huang-ho/2021第十二届蓝桥杯青少组省赛Python第6题(八皇后问题)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PL4y1e7N3?from=search&seid=9559549002194000112&spm_id_from=333.337.0.0这是map函数

Python map() 函数 | 菜鸟教程 (runoob.com)https://www.runoob.com/python/python-func-map.html这是递归

Python 递归 深入理解递归 Python递归剖析,绝对让你看懂!_storyfull-CSDN博客_python 递归https://blog.csdn.net/storyfull/article/details/102671946然后,我写出了个错的

n=int(input())
amount=0
zuoshang=1
zuoxia=1
lie=1
qipan=[]
for i in range(n):
    qipan.append(list(map(int,input().split())))
def mark(x,y):
    global lie,zuoshang,zuoxia
    zuoshang=1
    zuoxia=1
    lie=1
    print("零")
    for i in range(x):
        if(qipan[i][y]==0):
            lie=0
            print("一")
            break
    i=x
    j=y
    while (i>=0 and j>=0):
        if(qipan[i][j]==0 ):
            zuoshang=0
            print("二")
            break
        i-=1
        j-=1
    
    i=x
    j=y
    while (i>=0 or j<=n-1):
        if(qipan[i][j]==0 ):
            zuoxia=0
            print("三")
            break
        i-=1
        j+=1
def put(x):
    print(x)
    global amount
    if (x==n-1):
        amount+=1
        return
    for y in range(n):
        mark(x,y)
        print(lie,zuoshang,zuoxia)
        if(zuoshang==1 and zuoxia==1 and lie==1):
            qipan[x][y]=0
            print(qipan)
            put(x+1)
            qipan[x][y]=1
put(0)
print(amount)

 运行结果如下

 先这样吧,拖了好几天不知道怎么搞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值