Python每日一练(20230419)

news2025/1/20 12:14:22

目录

1. N皇后 II  🌟🌟🌟

2. 迷宫问题(递归)  🌟🌟🌟

3. 体操比赛成绩统计  ※

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. N皇后 II

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。

示例 1:

输入:n = 4
输出:2
解释:如上图所示,4 皇后问题存在两个不同的解法。

示例 2:

输入:n = 1
输出:1

提示:

  • 1 <= n <= 9
  • 皇后彼此不能相互攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或斜线上。

以下程序实现了这一功能,请你填补空白处内容:

```python
class Solution(object):
    def __init__(self):
        self.count = 0
    def totalNQueens(self, n):
        self.dfs(0, n, 0, 0, 0)
        return self.count
    def dfs(self, row, n, column, diag, antiDiag):
        if row == n:
            self.count += 1
            return
        for index in range(n):
            isColSafe = (1 << index) & column == 0
            isDigSafe = (1 << (n - 1 + row - index)) & diag == 0
            isAntiDiagSafe = (1 << (row + index)) & antiDiag == 0
            if isAntiDiagSafe and isColSafe and isDigSafe:
                _________________________;
if __name__ == '__main__':
    s = Solution()
    print (s.totalNQueens(4))
```

出处:

https://edu.csdn.net/practice/25949963

代码:

class Solution(object):
    def __init__(self):
        self.count = 0
    def totalNQueens(self, n):
        self.dfs(0, n, 0, 0, 0)
        return self.count
    def dfs(self, row, n, column, diag, antiDiag):
        if row == n:
            self.count += 1
            return
        for index in range(n):
            isColSafe = (1 << index) & column == 0
            isDigSafe = (1 << (n - 1 + row - index)) & diag == 0
            isAntiDiagSafe = (1 << (row + index)) & antiDiag == 0
            if isAntiDiagSafe and isColSafe and isDigSafe:
                self.dfs(row + 1,  n, (1 << index) | column,
                    (1 << (n - 1 + row - index)) | diag,
                    (1 << (row + index)) | antiDiag)

if __name__ == '__main__':
    s = Solution()
    print(s.totalNQueens(4))
    s = Solution()
    print(s.totalNQueens(1))

输出:

2
1


2. 迷宫问题(递归)

问题描述:一只老鼠在一个n×n迷宫的入口处,它想要吃迷宫出口处放着奶酪,问这只老鼠能否吃到奶酪?如果可以吃到,请给出一条从入口到奶酪的路径。

思考:解决问题之前,我们首先要做的就是仔细研究问题,找出问题的已知条件和要得到的是什么。和解数学问题、物理问题一样要先弄懂问题。那么,老鼠走迷宫问题的已知条件有什么呢?

数学模型重新定义问题:

问题:问老鼠能否吃到奶酪就是问能否找到一条从迷宫入口到出口的路径。如果不能找到,那么老鼠就吃不到奶酪;如果能够找到,那么就给出这条路径。

观察10×10的迷宫。这个迷宫其实是由10×10=100个格子组成的,其中绿色格子代表墙,白色格子代表路,如图(1)所示。

“绿色格子代表墙,白色格子代表路”是用语言形式描述的,需要转换成数学的形式。用1和0分别定义绿色格子和白色格子,可以得到如图(2)的迷宫。

将上面10×10的迷宫定义为如下的二维数组,即

m[10][10]=[
[1,1,1,0,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,1,1],
[1,0,1,1,1,1,1,0,0,1],
[1,0,1,0,0,0,0,1,0,1],
[1,0,1,0,1,1,0,0,0,1],
[1,0,0,1,1,0,1,0,1,1],
[1,1,1,1,0,0,0,0,1,1],
[1,0,0,0,0,1,1,1,0,0],
[1,0,1,1,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1]

有了对迷宫的数学定义,就可以很简单的定义迷宫的入口和出口了。迷宫的入口是m[0][3],出口是m[7][9]。老鼠走迷宫问题就是要找一条从入口到出口的路径,如果存在就返回这条路径;如果不存在,就返回不存在这种路径。也就是说,要在二维数组m中找一条从m[0][3]到m[7][9]全部为0的路径。 请使用递归解决迷宫路径查找问题。

以下程序实现了这一功能,请你填补空白处内容:

```python
def maze(m, n, route, pos, export):
    """走迷宫
    m       - 迷宫数组,列表
    n       - 迷宫阶数
    route   - 可能的路线,列表
    pos     - 当前位置,元组
    export  - 出口位置,元组
    """
    route.append(pos)
    if pos == export:
        print(route)
    if pos[0] > 0 and m[pos[0]-1][pos[1]] == 0 and (pos[0]-1,pos[1]) not in route:
        maze(m, n, route[:], (pos[0]-1,pos[1]), export)
    if pos[0] < n-1 and m[pos[0]+1][pos[1]] == 0 and (pos[0]+1,pos[1]) not in route:
        maze(m, n, route[:], (pos[0]+1,pos[1]), export)
    if pos[1] > 0 and m[pos[0]][pos[1]-1] == 0 and (pos[0],pos[1]-1) not in route:
        maze(m, n, route[:], (pos[0],pos[1]-1), export)
    ________________________________;

m = [
    [1,1,1,0,1,1,1,1,1,1], 
    [1,0,0,0,0,0,0,0,1,1], 
    [1,0,1,1,1,1,1,0,0,1], 
    [1,0,1,0,0,0,0,1,0,1], 
    [1,0,1,0,1,1,0,0,0,1], 
    [1,0,0,1,1,0,1,0,1,1], 
    [1,1,1,1,0,0,0,0,1,1], 
    [1,0,0,0,0,1,1,1,0,0], 
    [1,0,1,1,0,0,0,0,0,1], 
    [1,1,1,1,1,1,1,1,1,1]]
maze(m, len(m), list(), (0,3), (7,9))
```

出处:

https://edu.csdn.net/practice/25949964

代码:

def maze(m, n, route, pos, export):
    """走迷宫
    m       - 迷宫数组,列表
    n       - 迷宫阶数
    route   - 可能的路线,列表
    pos     - 当前位置,元组
    export  - 出口位置,元组
    """
    route.append(pos)
    if pos == export:
        print(route)
    if pos[0] > 0 and m[pos[0]-1][pos[1]] == 0 and (pos[0]-1,pos[1]) not in route:
        maze(m, n, route[:], (pos[0]-1,pos[1]), export)
    if pos[0] < n-1 and m[pos[0]+1][pos[1]] == 0 and (pos[0]+1,pos[1]) not in route:
        maze(m, n, route[:], (pos[0]+1,pos[1]), export)
    if pos[1] > 0 and m[pos[0]][pos[1]-1] == 0 and (pos[0],pos[1]-1) not in route:
        maze(m, n, route[:], (pos[0],pos[1]-1), export)
    if pos[1] < n-1 and m[pos[0]][pos[1]+1] == 0 and (pos[0],pos[1]+1) not in route:
        maze(m, n, route[:], (pos[0],pos[1]+1), export)

if __name__ == '__main__':
    m =[[1,1,1,0,1,1,1,1,1,1], 
        [1,0,0,0,0,0,0,0,1,1], 
        [1,0,1,1,1,1,1,0,0,1], 
        [1,0,1,0,0,0,0,1,0,1], 
        [1,0,1,0,1,1,0,0,0,1], 
        [1,0,0,1,1,0,1,0,1,1], 
        [1,1,1,1,0,0,0,0,1,1], 
        [1,0,0,0,0,1,1,1,0,0], 
        [1,0,1,1,0,0,0,0,0,1], 
        [1,1,1,1,1,1,1,1,1,1]]
    maze(m, len(m), list(), (0,3), (7,9))

输出:

[(0, 3), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (2, 7), (2, 8), (3, 8), (4, 8), (4, 7), (5, 7), (6, 7), (6, 6), (6, 5), (6, 4), (7, 4), (8, 4), (8, 5), (8, 6), (8, 7), (8, 8), (7, 8), (7, 9)]


3. 体操比赛成绩统计

体操比赛成绩统计。多名运动员,多个评委打分,去掉一个最高分和去掉一个最低分,对其余分数求平均分作为一个运动员成绩。

编程通过键盘输入每位运动员编号和每个评委的成绩,求出运动员的最终成绩,并将运动员编号和最终成绩保存在一个字典中,形如{编号1:最终成绩1,学号2:最终成绩2.....,并将结果输出。

出处:

https://edu.csdn.net/practice/25949965

代码:

t = int(input('请输入评委人数(不得少于3人):'))
s = int(input('请输入学生人数(不得少于1人):'))
stus = []
for i in range(s):
    stu = {'score':[]}
    stu.update({'sn':str(input('----\n请输入学生学号:'))})
    for j in range(t):
        stu['score'].append(input('请输入评委'+str(j+1)+'的评分:'))
    stu['score'].sort()
    stu.update({'min':stu['score'].pop(0)})
    stu.update({'max':stu['score'].pop()})
    stu.update({'avg':eval('+'.join(stu['score']))/len(stu['score'])})
    stus.append(stu)
r = {n['sn']:n['avg'] for n in stus}
print(r)

输出:


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式ID的生成方法

问题的提出 如今随着互联网的发展&#xff0c;数据的量级也是呈指数的增长&#xff0c;从GB到TB到PB.对数据的各种操作也是愈 加的困难&#xff0c;如何解决这个问题呢?此时就需要做数据库集群&#xff0c;为了提高查询性能将一一个数据库的数据分散 到不同的数据库中存储&am…

JVM垃圾回收与调优

文章目录 1、如何判断对象可以回收1.1、 引用计数法1.2、可达性分析法1.3、五种引用类型1.3.1 、强引用1.3.2 、软、弱引用1.3.3 、虚引用、终结器引用1.3.4、 终结器引用1.3.5 、总结 2. 垃圾清除算法2.1、标记清除2.2 、标记整理2.3、 复制 3. 分代垃圾回收3.1 、新生代、老年…

Excel技能之时间,士别三日让boss刮目相看

爱因斯坦说&#xff1a;“复利是世界第八大奇迹。”复利离不开时间&#xff0c;你也离不开时间。时间是如此重要&#xff0c;对每个人都是公平的。 曾经的你&#xff0c;看日历&#xff0c;数手指才能算清楚日期&#xff0c;不懂时间函数&#xff0c;太烦躁了。以下用真实的使…

哪种无线耳机音质最好?盘点2023四款好音质蓝牙耳机

随着蓝牙技术的发展&#xff0c;近几年人们对于蓝牙耳机的需求也在不断增加。但&#xff0c;蓝牙耳机自始至终都是用来听的&#xff0c;所以音质对于一款蓝牙耳机来说还是很重要的。下面&#xff0c;我来给大家推荐四款好音质蓝牙耳机&#xff0c;可以当个参考。 一、南卡小音舱…

沉岛思想(BFS)-朋友圈思想(并查集)

本篇博客旨在记录自已笔记&#xff0c;同时希望可给小伙伴一些帮助。本人也是算法小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误之处&#xff0c;希望小伙伴们可以在评论区指出来&#xff0c;共勉 &#x1f4aa;。 沉岛思想&#xff1a; 题目&#xff1a; 给定一…

Sharding-JDBC之水平分库水平分表

目录 一、简介二、maven依赖三、数据库3.1、创建数据库3.2、创建表 四、配置&#xff08;二选一&#xff09;4.1、properties配置4.2、yml配置 五、实现5.1、实体5.2、持久层5.3、服务层5.4、测试类5.4.1、保存数据5.4.2、查询数据 一、简介 这里的水平分库分表是指 水平分库 …

台湾精锐APEX行星减速机直齿轮和斜齿轮有什么区别?如何选择?

台湾精锐APEX行星减速机是带太阳齿轮/行星齿轮/齿圈的机械装置。行星减速机是由太阳齿轮&#xff0c;行星齿轮的齿轮架和齿圈组成的机械装置。太阳齿轮位于中心&#xff0c;将扭矩传递到围绕太阳齿轮旋转的行星齿轮。行星齿轮和太阳齿轮位于齿圈内。 APEX减速机分为直齿轮和斜…

7.2 参数区间的估计

学习目标&#xff1a; 要学习参数的区间估计&#xff0c;我会采取以下步骤&#xff1a; 学习理论知识&#xff1a;首先&#xff0c;我会学习与参数的区间估计相关的理论知识&#xff0c;包括置信区间、抽样分布、中心极限定理、样本容量对置信区间的影响等。 掌握计算方法&am…

【小程序】小程序组件-2

目录 一. 滚轮选框 二. 音频组件 一. 滚轮选框 说真的&#xff0c;感谢微信开发者工具&#xff0c;让我这种笨比能够轻松学会这种看起来相当复杂的组件 picker组件的mode有几种模式&#xff0c;region啦&#xff0c;date啦&#xff0c;time啦&#xff0c;可以自行尝试 针对…

牛客社区项目

创建项目 认识Spring Spring Ioc Inversion 偶发Control 控制反转&#xff0c;是一种面向对象的设计思想。Dependecy Injection 依赖注入&#xff0c;是Ioc思想的实现方式。Ioc Container Ioc容器&#xff0c;是实现依赖注入的关键&#xff0c;本质上是一个工厂。 下面通过…

解决若依验证码异常:Error: image == null

前言 前两天在改项目突然发现若依的框架可以正常启动但是验证码加载不出来了&#xff0c;一直弹窗提示异常信息&#xff0c;下边是关于问题的描述和解决方案&#xff0c;没有耐心看过程的建议直接滑到最底下看解决方式 问题原因 登录页面一直提示 image null 如图 1 所示&…

最新研究!充分发挥混合量子经典算法新潜力

日本理化学研究所RIKEN的研究人员开发了一种量子计算算法&#xff0c;可高效准确地计算复杂材料中的原子级相互作用。物理学家理查德费曼于1981年首次提出量子计算机的应用&#xff0c;而该算法有可能为凝聚态物理学和量子化学带来前所未有的新局面。 量子计算机有望增强数字处…

数据格式转换(labelme、labelimg、yolo格式相互转换)

&#x1f468;‍&#x1f4bb;个人简介&#xff1a; 深度学习图像领域工作者 &#x1f389;总结链接&#xff1a; 链接中主要是个人工作的总结&#xff0c;每个链接都是一些常用demo&#xff0c;代码直接复制运行即可。包括&#xff1a; &am…

【鸿蒙应用ArkTS开发系列】- 常量类定义和使用

本篇为入门基础知识介绍&#xff0c;作为代码学习记录使用&#xff0c;请选择性阅读。 一、常量类定义 在ArkTS中&#xff0c;定一个常量很简单&#xff0c;具体如下&#xff1a; export const TAB_HOME_INDEX : number 1;export const TAB_HOME_NAME : string "首…

MobileNetV2详细原理(含torch源码)

目录 MobilneNetV2原理 MobileNetV2的创新点&#xff1a; MobileNetV2对比MobileNetV1 MobilneNetV2源码&#xff08;torch版&#xff09; 训练10个epoch的效果 MobilneNetV2原理 MobileNetV2是由谷歌开发的一种用于移动设备的轻量级卷积神经网络。与传统卷积神经网络相比…

RapidOCR调优尝试教程

目录 引言常见错例种类个别字丢失调优篇个别字识别错误调优篇情况一&#xff1a;轻量中英文模型识别对个别汉字识别错误情况二&#xff1a;轻量中英文模型对个别英文或数字识别错误 相关链接 引言 由于小伙伴们使用OCR的场景多种多样&#xff0c;单一的参数配置往往不能满足要…

qt6.2.4下载在线安装

前言 qt官网声明5.15版本以后不提供安装包安装&#xff0c;均需在线安装&#xff1a;Due to The Qt Company offering changes, open source offline installers are not available any more since Qt 5.15。此文主要记录在线安装方法及遇到问题解决方式。 一. 在线安装执行文…

mingw32-make -j$(nproc) 命令含义

系列文章目录 文章目录 系列文章目录前言一、具体操作二、使用步骤 前言 在使用krita源码编译时遇到报错&#xff1a; 这段代码是 Krita 源码中的一个 CMakeLists.txt 文件片段&#xff0c;用于配置 Krita 项目的构建系统。以下是对这段代码的解释&#xff1a; find_package(…

如何写科技论文?(以IEEE会议论文为例)

0. 写在前面 常言道&#xff0c;科技论文犹如“八股文”&#xff0c;有固定的写作模式。本篇博客主要是针对工程方面的论文的结构以及写作链条的一些整理&#xff0c;并不是为了提高或者润色一篇论文的表达。基本上所有的论文&#xff0c;都需要先构思好一些点子&#xff0c;有…

一文带你快速了解业务流程分析和流程建模

&#x1f525;业务流程分析与建模 01业务流程分析要了解的问题 有哪些业务流程&#xff1f;业务流程如何完成&#xff1f;业务流程有谁参与&#xff1f;流程中有哪些控制流&#xff08;如判断、 同步分支和会合&#xff09;&#xff1f;多个不同流程建的关系&#xff1f;完成…