04 2023 档案
摘要:PEP 255 – Simple Generators | peps.python.org 生成器的使用 Functional Programming HOWTO — Python 3.11.3 documentation 附: 递归生成器的难点:Recursive Generators in Py
阅读全文
摘要:小结:从几个递归题目开始:1、迷宫。二维迷宫探索有四个方向,因此每层递归有四个方向;为了不走重复路,因此递归参数有position这个记录已走过的路的变量。 2、火车进站。从三个变量上操作,waitline,inline,outline。基本结束条件,当全部火车进入outline时,打印。 递归自身
阅读全文
摘要:修改1: 修改2: 修改3:(正确答案) 修改4:优化修改3。在修改3代码实现,尽管找到了一组可行的true,但仍然会执行后面的递归。 可进行优化找到一组true后不再进行后面的递归尝试。优化实现方式是,找到一组true后,之后其他递归全部执行返回。 1 #no=input() 2 a=list(m
阅读全文
摘要:看到讨论说这是匈牙利算法,多目标跟踪。 求解最大匹配问题 带你入门多目标跟踪(三)匈牙利算法&KM算法 - 知乎 (zhihu.com) 1 ''' 2 这题配对很难理解,理解了一天,看程序理解很乱,还是得看输出,逐个跟着。 3 寻找最大配对数方法如下: 4 在保持现有配对数不变的情况下,继续寻找可
阅读全文
摘要:1 #1271919 2 d={1:'one',2:'two',3:'three',4:'four',5:'five', 3 6:'six',7:'seven',8:'eight',9:'nine',10:'ten', 4 11:'eleven',12:'twelve',13:'thirteen',
阅读全文
摘要:1 ''' 2 Sorts are guaranteed to be stable. 3 That means that when multiple records have the same key, 4 their original order is preserved. 5 所以,按相同分数排
阅读全文
摘要:思路: 人民币转换规则较多,需要根据要求和测试调整判断语句。 已知转换可分为4位数一组,且每四位数转换规则一致。考虑迭代方法。 迭代如何缩小规模,字符串切片方法。字符串每次切片四位,需要一个跟踪参数,因此使用while循环,c作为跟踪参数。代码中c最大为3,最高可实现12位数字转换,需要实现更大数字
阅读全文
摘要:思路: 每个字母都有一个漂亮度1-26。每个字母漂亮度不相同忽略大小写,字符串漂亮度是字母漂亮度总和。取次数最多的字符漂亮度最大,其他依次次大。 #贪心。先排序从大到小,后计算整体漂亮度。从局部最优到整体最优,为贪心算法。 代码: 1 from collections import Counter
阅读全文
摘要:用Python内置函数eval() 1 import sys 2 a=sys.stdin.readline().strip() 3 a=a.replace("{","(") 4 a=a.replace("}",")") 5 a=a.replace("[","(") 6 a=a.replace("]"
阅读全文
摘要:思路: 该题目符合最优解拥有最优子解,符合动态规划算法要求. 2 思路:操作方法有3种,替换、插入、删除。把a字符串编辑成b字符串的距离。 3 假设空字符串开始编辑作为bottom 边界。 4 a字符串作为深度,b作为宽度。 5 沿宽度遍历为add,沿深度遍历为delete,斜角为change 6
阅读全文
摘要:思路: 多维递归,深度有限遍历加减乘除四种情况。 知识点: 1、多维递归不能对传递的变量进行修改,否则无法回溯。 应该传递一个新地址的变量,如代码所示,传递切片的列表,不修改列表 2、搜索遗漏。两括号比如((9-4)-1)*6 选取任意一个数作为第一个运算数与24运算,不能找出所有24点的计算方法。
阅读全文
摘要:思路:1、对比字符最后一个,对比字符倒数第二个,一致对比到最后一个,如此递归。 2、该题符合多维递归,回溯判断。 遇到“*”通配符时,列举三种不同参数传递的递归情况,分叉递归以达到穷举的效果。(回溯) 3、结束条件:两字符串均为空,不计算“*”字符 具体,如代码所示。 #*只能匹配数字或字母0个或无
阅读全文
摘要:思路: 多维递归模拟进站出站,递归回溯,使用全局变量收集结果,最后输出结果。 语言知识: 1、关于参数传入和可变变量修改 2、错误使用return 3、进出站不同跟踪方法。cursor只是表示等待进站火车下标。 递归可视化: 程序: 1 import sys 2 a=sys.stdin.readli
阅读全文
摘要:细节注意:0、字符串的count()方法可计算字符个数,如 1、split()方法,以空格划分区别,如下图: 代码如下 1 import sys 2 a = sys.stdin.readline().strip() 3 a1="" 4 f=0 5 for i in a:#在第一个“前加入一个空格,在
阅读全文
摘要:思路:按照模拟思路,没有技巧地,代码如2。 新思路:把非数字转换成空格,使用空格作为标记切片。 !!! 注意:字符串变更,要用replace()方法生成新字符串!!! 参考高赞答案,重写代码如1: 1 import sys 2 a=[] 3 for line in sys.stdin: 4 a.ap
阅读全文
摘要:参考高赞答案思路: 将真分数分子、分母分别x2。目的使循环:分母除分子余数为0存在。 1 import sys 2 a=[] 3 for line in sys.stdin: 4 a.append(line.strip().split("/")) 5 for i in a: 6 l=[] 7 a=i
阅读全文
摘要:思路: 该题目符合,最优结果拥有最优子结果的特征。考虑用动态规划。通过循环获取每个参数作为最后一个桩的最优子结果,后面桩的结果为前一个桩的最优子结果+1。如梅花桩“2 5 1 5 4 5”。参考高赞答案,代码如下 1 import sys 2 a=int(sys.stdin.readline().s
阅读全文
摘要:思路:用模拟跟踪U、D 得输出的歌曲,用双指针跟踪歌曲当前窗口。 注意,在第一首向上滑动,和最后一首向下滑是,窗口特殊跳动,此时双指针指向特殊处理。 留意到,不管是特殊情况还是普通情况,指针上划时歌曲减一。如1调到10,10上划为9,视为减一。 得到代码如下: import sys a = int(
阅读全文
摘要:思路: 要实现字符串的分隔和按输入顺序输出,所以使用列表。两列表实现。 知识点: 1、python的可哈希不可哈希对象 详见:详解Python中的可哈希对象与不可哈希对象(二) - 腾讯云开发者社区-腾讯云 (tencent.com) 2、斜杆的“\”字符的读取与分隔“\\” 用split()方法分
阅读全文
摘要:原文连接:(7条消息) 将真分数分解为埃及分数_且_听_风_吟的博客-CSDN博客 1 a,b = 8,11 2 a = a * 10 3 b = b * 10 4 res = [] 5 while a: 6 for i in range(a,0,-1): 7 print(i,b) 8 if(b %
阅读全文
摘要:反思: 这题咋一看不难,但是越做坑越多,按照一开始不完善的思路无法完全通过测试。 参看高赞答案,代码行数特少。但是没考虑一个括号中有三个矩阵的情况。 思路: 1、判断哪两个矩阵开始相乘的条件:遇到“)”时,该字符前两个矩阵开始相乘。把相乘后矩阵行列数组压入栈栈中。该题默认不存在(A(BCD))一个括
阅读全文
摘要:思路: 三层循环实现矩阵相乘。 import sys a=[] for line in sys.stdin: a.append(list(map(int,line.strip().split()))) #print(a) matrix1=a[3:3+a[0][0]] matrix2=a[3+a[0]
阅读全文
摘要:思路:1、把命令和执行对录入一字串字典和二字串字典 2、取字典的可以与输入对比 3、为了保证唯一性,用c常数增加1来判断是否唯一。 4、最后根据c值统一打印输出 1 import sys 2 a=[] 3 for line in sys.stdin: 4 a.append(line.strip().
阅读全文