随笔分类 -  编程-python

摘要:思路: 该题目符合最优解拥有最优子解,符合动态规划算法要求. 2 思路:操作方法有3种,替换、插入、删除。把a字符串编辑成b字符串的距离。 3 假设空字符串开始编辑作为bottom 边界。 4 a字符串作为深度,b作为宽度。 5 沿宽度遍历为add,沿深度遍历为delete,斜角为change 6 阅读全文
posted @ 2023-04-08 18:24 Aneverforget 阅读(143) 评论(0) 推荐(0)
摘要:思路: 多维递归,深度有限遍历加减乘除四种情况。 知识点: 1、多维递归不能对传递的变量进行修改,否则无法回溯。 应该传递一个新地址的变量,如代码所示,传递切片的列表,不修改列表 2、搜索遗漏。两括号比如((9-4)-1)*6 选取任意一个数作为第一个运算数与24运算,不能找出所有24点的计算方法。 阅读全文
posted @ 2023-04-08 16:58 Aneverforget 阅读(190) 评论(0) 推荐(0)
摘要:思路:1、对比字符最后一个,对比字符倒数第二个,一致对比到最后一个,如此递归。 2、该题符合多维递归,回溯判断。 遇到“*”通配符时,列举三种不同参数传递的递归情况,分叉递归以达到穷举的效果。(回溯) 3、结束条件:两字符串均为空,不计算“*”字符 具体,如代码所示。 #*只能匹配数字或字母0个或无 阅读全文
posted @ 2023-04-08 15:03 Aneverforget 阅读(58) 评论(0) 推荐(0)
摘要:思路: 多维递归模拟进站出站,递归回溯,使用全局变量收集结果,最后输出结果。 语言知识: 1、关于参数传入和可变变量修改 2、错误使用return 3、进出站不同跟踪方法。cursor只是表示等待进站火车下标。 递归可视化: 程序: 1 import sys 2 a=sys.stdin.readli 阅读全文
posted @ 2023-04-08 12:27 Aneverforget 阅读(218) 评论(0) 推荐(0)
摘要:细节注意:0、字符串的count()方法可计算字符个数,如 1、split()方法,以空格划分区别,如下图: 代码如下 1 import sys 2 a = sys.stdin.readline().strip() 3 a1="" 4 f=0 5 for i in a:#在第一个“前加入一个空格,在 阅读全文
posted @ 2023-04-05 18:47 Aneverforget 阅读(119) 评论(0) 推荐(0)
摘要:思路:按照模拟思路,没有技巧地,代码如2。 新思路:把非数字转换成空格,使用空格作为标记切片。 !!! 注意:字符串变更,要用replace()方法生成新字符串!!! 参考高赞答案,重写代码如1: 1 import sys 2 a=[] 3 for line in sys.stdin: 4 a.ap 阅读全文
posted @ 2023-04-05 17:43 Aneverforget 阅读(45) 评论(0) 推荐(0)
摘要:参考高赞答案思路: 将真分数分子、分母分别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 阅读全文
posted @ 2023-04-05 15:36 Aneverforget 阅读(87) 评论(0) 推荐(0)
摘要:思路: 该题目符合,最优结果拥有最优子结果的特征。考虑用动态规划。通过循环获取每个参数作为最后一个桩的最优子结果,后面桩的结果为前一个桩的最优子结果+1。如梅花桩“2 5 1 5 4 5”。参考高赞答案,代码如下 1 import sys 2 a=int(sys.stdin.readline().s 阅读全文
posted @ 2023-04-05 14:32 Aneverforget 阅读(94) 评论(0) 推荐(0)
摘要:思路:用模拟跟踪U、D 得输出的歌曲,用双指针跟踪歌曲当前窗口。 注意,在第一首向上滑动,和最后一首向下滑是,窗口特殊跳动,此时双指针指向特殊处理。 留意到,不管是特殊情况还是普通情况,指针上划时歌曲减一。如1调到10,10上划为9,视为减一。 得到代码如下: import sys a = int( 阅读全文
posted @ 2023-04-05 13:58 Aneverforget 阅读(48) 评论(0) 推荐(0)
摘要:思路: 要实现字符串的分隔和按输入顺序输出,所以使用列表。两列表实现。 知识点: 1、python的可哈希不可哈希对象 详见:详解Python中的可哈希对象与不可哈希对象(二) - 腾讯云开发者社区-腾讯云 (tencent.com) 2、斜杆的“\”字符的读取与分隔“\\” 用split()方法分 阅读全文
posted @ 2023-04-05 12:46 Aneverforget 阅读(71) 评论(0) 推荐(0)
摘要:原文连接:(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 % 阅读全文
posted @ 2023-04-01 18:15 Aneverforget 阅读(59) 评论(0) 推荐(0)
摘要:反思: 这题咋一看不难,但是越做坑越多,按照一开始不完善的思路无法完全通过测试。 参看高赞答案,代码行数特少。但是没考虑一个括号中有三个矩阵的情况。 思路: 1、判断哪两个矩阵开始相乘的条件:遇到“)”时,该字符前两个矩阵开始相乘。把相乘后矩阵行列数组压入栈栈中。该题默认不存在(A(BCD))一个括 阅读全文
posted @ 2023-04-01 17:32 Aneverforget 阅读(61) 评论(0) 推荐(0)
摘要:思路: 三层循环实现矩阵相乘。 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] 阅读全文
posted @ 2023-04-01 13:01 Aneverforget 阅读(48) 评论(0) 推荐(0)
摘要:思路:1、把命令和执行对录入一字串字典和二字串字典 2、取字典的可以与输入对比 3、为了保证唯一性,用c常数增加1来判断是否唯一。 4、最后根据c值统一打印输出 1 import sys 2 a=[] 3 for line in sys.stdin: 4 a.append(line.strip(). 阅读全文
posted @ 2023-04-01 11:44 Aneverforget 阅读(153) 评论(0) 推荐(0)
摘要:思路:1、穷举查找字符串子串 2、把相同子串存入数组 3、生成新数组存储对应index的子串长度 4、返回第一个最长数组index,通过index查找子串输出。 1 import sys 2 s1=sys.stdin.readline().strip() 3 s2=sys.stdin.readlin 阅读全文
posted @ 2023-03-31 19:20 Aneverforget 阅读(80) 评论(0) 推荐(0)
摘要:自定义类型链表:用链表的方式实现链表的生成、插入和删除。 思路:需要两个class,一个为node,用与生成节点,一个为linklist,用于定义节点操作以及初始化head头节点。 因为单向链表每个节点只有一个指针,因此在执行删除操作时,需要两指针并行。 head头节点作为特殊情况需要另一个if捕捉 阅读全文
posted @ 2023-03-29 15:42 Aneverforget 阅读(112) 评论(0) 推荐(0)
摘要:这题最巧的是如何判断密码含有字符串。 最巧妙的是如何判断一串字符串中是否包含重复子串: 思路:for 循环提取可能的重复子串,通过子串作为划分字符串的依据,判断划分后的字符串是否长度大于等于3,则可判断字符串中是否含有两个或两个以上重复子串。简短两行,要注意index不能超出数组。 16 for i 阅读全文
posted @ 2023-03-28 18:57 Aneverforget 阅读(86) 评论(0) 推荐(0)
摘要:new_ma,m=[],[] new_ma=m。此为非拷贝改变new_ma或ma都会改变另一个数列 1 w=[] 2 ma=[1,2] 3 b=[2,1] 4 for i in range(2): 5 w=w+[ma[i]]*b[i] 6 print(w) 7 8 ma=[1,2] 9 new_ma 阅读全文
posted @ 2023-03-28 10:45 Aneverforget 阅读(42) 评论(0) 推荐(0)
摘要:思路:陈砝码也就是砝码有多少种组合方式。1.用穷举方法,但是操作量大,且同一重量可以有多重不同砝码称取方式。2.用确定砝码称取范围(0,max_weight),并逆推组合是否成立的方式,可减少计算量。这个方法还不知如何实现。如实现方式为每次取最接近重量的砝码,砝码有2g两个,3g一个,称重4g.计算 阅读全文
posted @ 2023-03-28 10:36 Aneverforget 阅读(261) 评论(0) 推荐(0)
摘要:思路:已知反弹高度为下落高度的一半。采用模拟的方法。这题比较简单不知道为什么放在中等难度。 1 a=float(input()) 2 n=a 3 sum=0 4 def spring_h(a): 5 return a/2 6 for i in range(5): 7 sum=sum+n*2 8 n= 阅读全文
posted @ 2023-03-27 16:01 Aneverforget 阅读(45) 评论(0) 推荐(0)