- 博客(22)
- 收藏
- 关注
原创 编程基础 0 到 1 1768. 交替合并字符串
刚开始我的i,j声明时使用的是i=0,j=0,但是报错了。我以为是没有声明类型,所以报错,但是加了int也不行,后来发现是在 Python 中,不能像在 C 或 Java 等语言中那样,在同一行中用逗号分隔来同时声明多个变量类型。方法是处理字符串列表或字符串集合时非常有用的工具,特别是当你需要将它们合并成一个单一的、格式化的字符串时。开始,通过交替添加字母来合并字符串,并将多余的字母追加到合并后的字符串末尾,可以使用两个指针来遍历这两个字符串。方法是在内部优化的,可以一次性完成所有的连接操作。
2025-04-02 18:58:41
516
原创 蓝桥杯一个月冲刺备赛-填空
只是我第一次的代码,显示答案错误。但我仔细一想,题目说的是长度为10000,不是大小到10000,这里理解出现问题导致答案错误。4.12日蓝桥杯软件赛,报名了pythonB组,现在开始准备。只需要除2和4取余求和比较大小即可。1.2024,第十五届两道填空。
2025-04-02 18:40:51
254
原创 动态规划(基础版)第十二题221. 最大正方形
2.设i从(1,a)开始循环看是否有对应的正方形之和为4^(i-1),有即将对应和放入面积列表。然而,这个逻辑是错误的,因为它会在找到第一个不满足四倍关系的面积时立即返回,而不是继续搜索最大面积。这里修改了for循环中的i,j范围,原本写的+1显示超范围,于是我删掉了,后来发现是m,n弄反了,修改后没有恢复原本的范围,导致范围小了。它取左、上、和左上三个相邻位置的最小边长,并加 1,得到以当前位置为右下角的最大正方形的边长。矩阵一次,找到最大的边长,并返回其平方作为最大正方形的面积。
2025-01-21 16:47:19
144
原创 蓝桥杯-5.拼数
一般我们学习时用这种方式解决单个数大小排序问题,但是这里使用冒泡排序,是对两个相邻数之和排序作比。冒泡排序之所以适用于此问题,是因为它能够满足基于字符串连接后字典序大小的排序需求。尽管冒泡排序的时间复杂度为O(n^2),在处理大数据集时可能效率不高,但对于中小规模的数据集,它仍然是一个简单且有效的排序方法。刚开始看到这个题,想把第二排数字从高位依次比较,但我发现我不会。于是看了题解,主要的解题方式是冒泡排序,其他的不容易理解,我没有详细看。现要将这 n 个数字连接成一排,即令相邻数字收尾相接,组成一个数。
2025-01-20 16:59:25
100
原创 计算机病毒与原理(第四版)-期末复习习题
服务程序通过特定的端口,打开用户计算机的连接资源,一旦攻击者所掌握的客户端发出请求,反弹木马便和他连接起来,将用户信息窃取出去。原理:防火墙对于连入的连接过滤很严格,而对连出的疏于防范,因此反弹式木马的服务端使用主动端口,客户端使用被动端口,反弹式木马使用系统信任的端口,系统会认为是普通的应用程序,而不对其连接进行检查。Rootkit原理:是一种隐藏自身及其所控制的核心代码的工具集,用于提升攻击者在受感染系统中的权限,能隐藏进程、文件、网络连接等,使传统安全检测工具难以发现。
2025-01-05 17:44:33
579
原创 计算机病毒与恶意代码(第四版)-自用期末复习整理
这类恶意代码通常会加密用户的数据资产(如文档、邮件、数据库、源代码、图片等),或者限制用户对设备的访问,然后向用户展示勒索信息,要求用户支付赎金以获取解密密钥或恢复设备访问权限。移动终端恶意代码以移动终端为感染对象,以移动终端网络和计算机网络为平台,通过无线或有线通信等方式,对移动终端进行攻击,从而造成移动终端异常的各种不良程序代码。特洛伊木马(Trojan Horse)是一种非授权的远程控制程序,它隐藏在看似无害的程序中,当用户不知情地下载并运行这个程序时,木马就会在用户的计算机系统中执行恶意操作。
2025-01-05 17:30:53
860
原创 不同虚拟机之间进行socket套接字通信
理论上来讲,可以实现两个或者多个单机联系,但是我没有实现。刚开始用我的虚拟机去连朋友的虚拟机,但是失败了,因为我的ip是本地回环接口 ,无法与外界连接。所以只尝试了自己电脑上两个虚拟机相连通信。这里我们成功实现了两个虚拟机之间的通信。输入同一IP后,可以实现多个单机通信。
2024-12-05 20:33:21
212
原创 动态规划(基础版)第十一题931. 下降路径最小和
然后我发现我可以删除第四,五行代码,它本身是我用来减少代码出错的,但是一行数据的情况可以使用剩下的代码实现。在这一题里,出现异常的报错不是第7行,而是第9行,但我们知道,实际出现问题需要更改的是遍历范围,只是数组越界反映在动态规划的核心语句上。这里我将第四行代码改成了输出数组第一个值,因为当n==1时,数组里只有一个数据。比如:在try中正常执行代码,如果异常,就跳转到except,在这里可以中断,跳出循环或者继续执行。这里很奇怪,大部分测试用例都通过了,但是这里却说输出与预期不符,多了括号。
2024-12-02 10:34:06
524
原创 如何使用python绘制星形图标并有逐渐变大效果
星形的绘制并实现逐渐变大效果这段代码定义了一个基于Tkinter库的图形界面应用程序,它显示了一个动态变化大小的星形。
2024-11-30 22:02:48
1143
原创 利用Socket,编写一个聊天程序出现的问题及解决方式
那么在这里我们就实现了多个客户之间的联系,并且可以在后台(服务器)上和其他客户显示页面看到聊天记录。这里注意我们一定要注意输入时尾部一定要加 -lpthread,需要确保链接 pthread 库。另外,我很好奇能否在其他主机上进行数据传输 ,这个代码我会进一步完善。我猜测这里是因为我没有创建客户端所以连接失败。第二次编译客户端时我没有写就出现了报错,如下图右上第一行代码。
2024-11-28 22:49:36
346
原创 动态规划(基础版)第十题120. 三角形最小路径和
在这里我突然发现,我建立的dp是一个矩阵而不是三角形,我不确定这样行不行,所以我打算先这样写下去,将没有值的部分填充为0,这样不影响结果。数组(而非创建其副本)的策略来追踪从三角形顶端到底部的最小路径和,因为省去了额外的空间开销,所以效率应该更高。值得注意的是,由于我们是从下往上遍历的,所以每个元素在被更新时,其下方的元素值已经是最小路径和了。这种方法的时间复杂度是 O(n2),其中 n 是三角形的行数(也是列数的最大值,对于等腰三角形而言)。这是我第一个成功的代码,虽然成功了,但是效率太低,执行用时长。
2024-11-24 12:11:21
415
原创 Android移动开发—伪微信
但是我这里使用的是tools里的图片,所以没有显示。我的想法是点开上一个视频中的harry那一栏可以进入下面的聊天详情页面,但是button不能跳转,不知道原因。所以做了两个单独的页面让大家看一下原本规划中的样子。2.第一个页面本来做了不可见的button跳转(不影响图片与文字),但是不知道为什么点击button不能成功跳转。1.联系页面的图片不能直接显现出来,需要点进去后图片才能显示,不知道什么问题,没有解决。这个页面满足了四个页面相互跳转,进入页面时放音乐。3.联系的详情页面的文字没有实现发送功能。
2024-11-18 08:57:00
487
原创 动态规划(基础版)第九题63. 不同路径 II
这段代码使用动态规划的方法解决了具有障碍物的网格中的唯一路径问题。它通过一个二维数组dp来存储到达每个单元格的唯一路径数量,并根据网格中的障碍物和已计算的路径数量来更新这个数组。最终,它返回了从左上角到右下角的唯一路径数量。这种方法的时间复杂度是 O(m * n),其中 m 和 n 分别是网格的行数和列数,因为它需要遍历整个网格一次来计算路径数量。这是我第一次写出的代码,可以运行,但只能通过部分用例我想,应该是最后两行出了问题。
2024-11-11 09:12:36
979
原创 动态规划(基础版)第八题64. 最小路径和
(起点的值),然后将第一行的每个后续元素设置为前一个元素的值加上当前元素的值(因为我们只能从左边到达第一行的任何位置),并将第一列的每个后续元素设置为上方元素的值加上当前元素的值(因为我们只能从上面到达第一列的任何位置,除了起点)。这一行中的错误在于没有考虑到i=0或j=0的情况,即第一行或第一列的元素只能从上面或左边的元素转移而来,不能从左上角转移而来。现在,让我们回顾这两个答案,主要的区别在于最后一行的返回值不同,但是执行用时却相差很大。刚开始,它说i识别不了,求不出二维数组的宽度。
2024-11-09 14:07:55
497
原创 动态规划(基础版)学习记录第七题62. 不同路径
1.动态规划2.看到这题第一眼,我的想法先建立一个列表,出发点(0,0),结束点(m,n)。让机器人(定位(i,j))从(0,0)先往右走(i+1,j),如果不能继续向右,就向下走(i,j+1);如果向下走成功就返回上一次转折点前一格位置(i-1对应的位置)走另一条路。但这实现起来有些困难。当我看着那个棋盘图的时候,我突然意识到,这不就是爬楼梯吗,一次爬1阶或者2阶或者n阶,直到达到m或n的值,计算所有爬楼梯方法的总和,最后你再把这两个和相乘即可。
2024-11-01 10:50:43
1004
原创 动态规划(基础版)第六题740. 删除并获得点数
对于这一题最开始我想建立一个列表,对应每一个删除点数后的删除总和,选取其中的最大值输出。在循环里,在每一个i里,只要有j满足+1或-1的条件,就把其对应的点数放到sum里。listsumdelete题解将这个题目与前一个题目联系起来了,也就是说我们可以将这个问题转化为一个打家劫舍的问题。对于每个数字,我们可以将它的点数看作是这个数字的价值,然后使用打家劫舍的方法来求解。具体来说,我们可以先统计出每个数字出现的次数,并且将每个数字的点数加起来,得到一个新的数组total。
2024-10-26 22:43:08
930
原创 动态规划(基础版)学习记录第五题198. 打家劫舍
我们可以发现,如果我们要打劫第i个房间,那么我们就不能打劫第i-1个房间,所以我们需要在前i-2个房间中选择打劫的房间,或者不打劫第i个房间,取两者中的最大值。这是我的第一个代码,仿照746写的。首先它没有考虑只有一个房屋的状态,其次第八排不是在dp[i-2]与dp[i-1]中挑一个最大值,而是在dp[i-2]+nums[i]与dp[i-1]中挑一个最大值。这是因为问题的设定要求小偷不能同时偷相邻的房屋,因此,在考虑偷第二个房屋时,必须同时考虑如果不偷第二个房屋,那么最高金额就是偷第一个房屋时的金额。
2024-10-22 17:10:37
278
原创 leetcode动态规划(基础版)746. 使用最小花费爬楼梯
从第2个台阶开始,每次计算dp[i]时,可以选择从dp[i-1]或dp[i-2]的位置跳上来,所以dp[i]的值为min(dp[i-1], dp[i-2]) + cost[i]。最后返回dp[-1]和dp[-2]中的较小值即可。在这个例子中,我们将阶乘问题分解成许多小问题,例如计算4的阶乘需要先计算3的阶乘,计算3的阶乘需要先计算2的阶乘,以此类推。可以看到,递归的方式是自上而下地解决问题,每次都需要重新计算子问题的解,而动态规划的方式是自下而上地解决问题,每次都利用之前计算的结果来计算当前的结果。
2024-10-20 22:22:24
424
原创 leetcote动态规划(基础版)学习记录第三题1137.第 N 个泰波那契数
在第一段代码中,我们使用字典来存储前三个斐波那契数列的值,每次计算新的斐波那契数列的值时,只需要查找字典中存储的前两个数即可。而在第二段代码中,我们使用列表来存储前三个斐波那契数列的值,每次计算新的斐波那契数列的值时,需要使用列表的切片操作来获取前两个数,这个操作比字典的查找操作要慢很多。该代码的问题在于,当n=0或n=1或n=2时,t_n[n]的值会出现问题,因为t_n[0]=0,t_n[1]=1,t_n[2]=1已经被赋值,但是在循环中,i从3开始,因此t_n[3]才是第三个斐波那契数。
2024-10-15 12:02:59
337
原创 leetcose动态规划(基础版)学习记录第二题509.斐波那契数
这一题几乎跟上一题一模一样,只是返回值从n-1变成了n,因为初始值变了。刚开始觉得跟昨天一样,这不手到擒来,于是写成了下面这样,但是没成功,因为直接把它当成了函数,但是在python中,变量需要先定义再使用,但是代码中直接使用了 fib(i) 赋值,这是不合法的。这与c++有很大不同。如果用循环计算也可以,但是耗时长,不过内存消耗降低了一点。
2024-10-12 18:24:56
224
原创 leetcode动态规划(基础版)学习记录
刚开始没有意识到是斐波那契数列,列了几个的具体实例,没有头绪,后来看了提示,但是不知道怎么表示前一个是什么(提示:To reach nth step, what could have been your previous steps?(Think about the step sizes)),但其实就是因为每次只能爬1个或2个台阶,所以到达第n个台阶的方法数只能从第n-1个台阶和第n-2个台阶转移而来。因此,第n个台阶的方法数等于第n-1个台阶的方法数加上第n-2个台阶的方法数。而且用时和消耗都上升了。
2024-10-09 22:48:26
202
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人