- 博客(156)
- 收藏
- 关注
原创 哈夫曼树从入门到进阶
这段代码就完成了一个哈夫曼数最基本的创建,采用类似于表格的方式存储各类节点的信息。对于每个叶子节点,初始时权重是已知的,其余都赋值为-1表示没有,而其他节点所有元素都是未知的。接下来,我们展示如何每次选择两个权重最小的节点。
2025-04-08 14:49:16
278
原创 迷宫游戏(深度优先搜索展示)
我们最后在display下实现所有效果# 导入库import sys# 游戏循环类pygame.display.set_caption('迷宫游戏')sys.exit()sys.exit()now_di = 0else :其中电脑运行游戏的部分用于展示深度优先遍历迷宫的效果,不用进行操作,到达终点会自己退出,将函数放在类的初始化中,就不用另外调用了,当对象被创建时就会自动运行。最后一句话的意思是,如果该文件直接被运行的话,就创建这个对象(实现所有效果)。
2025-04-08 13:43:50
276
原创 STM32小项目日志一 ——实现三档调节小风扇
如有问题,欢迎在评论区讨论,后续将继续更新其他模块的代码。໒( = ᴥ =)ʋ。通过按键按下返回数值,实现不同档位的调节。以上就是日志一全部内容。
2025-03-10 18:20:36
322
1
原创 OJ题目详解——1.8~19:肿瘤检测
一张CT扫描的灰度图像可以用一个N*N(0 < N <= 100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。
2025-02-11 12:47:56
182
原创 OJ题目详解——1.8~18:肿瘤面积
在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。第一行有一个整数n,表示正方形图像的边长。其后n行每行有n个整数,取值为0或255。整数之间用一个空格隔开。已知n不大于1000。输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。
2025-02-11 12:47:10
211
原创 OJ题目详解——1.8~17:最好的草
这个牧场有5个草丛:一个在第一行,一个在第二列横跨了二、三行,一个在第三行,一个在第四行横跨了四、五列,最后一个在第五行。接下来R行,每行C个字符,描述牧场地图。在牧场地图中,每个草丛要么是单个“#”,要么是有公共边的相邻两个“#”。给定牧场地图,计算有多少个草丛。新草分布在R行C列的牧场里。带入测试后,报错的代码给出的答案是3,而AC的给出的是4。第一行包含两个整数R和C,中间用单个空格隔开。欢迎各位大佬在评论区留言,谈谈自己的看法。例如,考虑如下5行6列的牧场地图。输出一个整数,表示草丛数。
2024-12-16 21:31:51
485
3
原创 OJ题目详解——1.8~16:矩阵剪刀石头布
矩阵上每个位置被三种生命形式之一占据:石头,剪刀,布。每天,上下左右相邻的不同生命形式将会发生战斗。在战斗中,石头永远胜剪刀,剪刀永远胜布,布永远胜石头。每一天结束之后,败者的领地将被胜者占领。接下来r行,每行c个字符,描述矩阵初始时被占据的情况。每个位置上的字符只能是R,S,P三者之一,分别代表石头,剪刀,布。第一行包含三个正整数r,c,n,分别表示矩阵的行数、列数以及天数。输出n天之后的矩阵占据情况。每个位置上的字符只能是R,S,P三者之一,相邻字符之间无空格。你的工作是计算出n天之后矩阵的占据情况。
2024-12-16 20:16:47
304
原创 OJ题目详解——1.8~15:细菌的繁殖与扩散
在边长为9的正方形培养皿中,正中心位置有m个细菌。假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中。求经过n(1≤n≤4)天后,细菌在培养皿中的分布情况。输入为两个整数,第一个整数m表示中心位置细菌的个数(2 ≤ m ≤ 30),第二个整数n表示经过的天数(1 ≤ n ≤ 4)。输出九行九列整数矩阵,每行的整数之间用空格分隔。整个矩阵代表n天后细菌在培养皿上的分布情况。
2024-12-15 11:20:52
477
原创 OJ题目详解——1.8~14:扫雷游戏地雷数计算
n行,每行m个字符,描述整个雷区。若相应格中是地雷,则用‘*’表示,否则用相应的周围格地雷数表示。它的精髓在于,通过已翻开格子所提示的周围格地雷数,来判断未翻开格子里是否是地雷。第一行包含两个整数n和m,分别表示雷区的行数和列数。接下来n行,每行m个字符,‘*’表示相应格子中是地雷,‘?’表示相应格子中无地雷。现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格的周围格地雷数。注:每个格子周围格有八个:上、下、左、右、左上、右上、左下、右下。
2024-12-15 11:20:24
359
原创 OJ题目详解——1.8~12:变幻的矩阵
有一个N x N(N为奇数,且1 <= N <= 10)的矩阵,矩阵中的元素都是字符。3. 中央元素不变(如下例中的 5),其他元素(如下例中的3)与“以中央元素为中心的对应元素”(如下例中的7)互换;现在给出一个原始的矩阵,和一个变幻后的矩阵,请编写一个程序,来判定原始矩阵是按照哪一种法则变幻为目标矩阵的。5. 如果 从原始矩阵 到 目标矩阵 的变幻,不符合任何上述变幻,请输出5。第N+2行到第2*N+1行:目标矩阵,共N行,每行N个字符;第二行到第N+1行:原始矩阵,共N行,每行N个字符;
2024-12-14 16:22:25
320
1
原创 OJ题目详解——1.8~11:图像旋转
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。
2024-12-14 16:20:54
364
原创 OJ题目详解——1.8~10:矩阵转置
第一行包含两个整数n和m,表示矩阵A的行数和列数。接下来n行,每行m个整数,表示矩阵A的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。m行,每行n个整数,为矩阵A的转置。相邻两个整数之间用单个空格隔开。输入一个n行m列的矩阵A,输出它的转置AT。
2024-12-13 14:20:23
308
原创 OJ题目详解——1.8~09:矩阵乘法
n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C 是n*k阶的,且C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + ……+A[i][m-1]*B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,矩阵中每个元素的绝对值不会大于1000。第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100。输出矩阵C,一共n行,每行k个整数,整数之间以一个空格分开。
2024-12-13 14:20:09
395
原创 OJ题目详解——1.8~08:矩阵加法
描述输入两个n行m列的矩阵A和B,输出它们的和A+B。输入第一行包含两个整数n和m,表示矩阵的行数和列数。1 <= n <= 100,1 <= m <= 100。接下来n行,每行m个整数,表示矩阵A的元素。接下来n行,每行m个整数,表示矩阵B的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。输出n行,每行m个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。#include<stdio.h>#include&l
2024-12-13 14:19:56
320
原创 OJ题目详解——1.8~07:矩阵归零消减序列和
首先对矩阵进行行归零:即对每一行上的所有元素,都在其原来值的基础上减去该行上的最小值,保证相减后的值仍然是非负整数,且这一行上至少有一个元素的值为0。接着对矩阵进行列归零:即对每一列上的所有元素,都在其原来值的基础上减去该列上的最小值,保证相减后的值仍然是非负整数,且这一列上至少有一个元素的值为0。显然,经过(n-1)次上述过程, n*n的矩阵会被转换为一个1*1的矩阵。然后对矩阵进行消减:即把n*n矩阵的第二行和第二列删除,使之转换为一个(n-1)*(n-1)的矩阵。
2024-12-12 19:17:26
326
2
原创 OJ题目详解——1.8~06:图像相似度
说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。
2024-12-12 19:17:11
334
原创 OJ题目详解——1.8~05:计算鞍点
给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。输入包含一个5行5列的矩阵。
2024-12-11 15:15:34
317
原创 OJ题目详解——1.8~04:错误探测
输入n + 1行,第1行为矩阵的大小n(0 < n < 100),以下n行为矩阵的每一行的元素,元素之间以一个空格分开。如果矩阵仅改变一个矩阵元素就能符合条件,则输出需要改变的元素所在的行号和列号,以一个空格分开。给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。"改变矩阵元素"的操作定义为0变成1或者1变成0。如果不符合以上两条,输出Corrupt。如果矩阵符合条件,则输出OK;
2024-12-11 15:15:23
534
原创 OJ题目详解——1.8~03:计算矩阵边缘元素之和
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。输出对应矩阵的边缘元素和。
2024-12-10 14:48:56
369
原创 成为点灯大师的日志四——STM32之旋转编码器控制亮度
如有问题,欢迎在评论区讨论,后续将继续更新其他模块的代码。໒( = ᴥ =)ʋ。通过旋转旋转编码器,改变占空比,控制LED亮度。以上就是日志四全部内容。注:图片来自于江科大。
2024-12-10 14:48:20
1071
原创 成为点灯大师的日志三——STM32之LED流水灯(呼吸版)
利用改变占空比的方式来实现LED呼吸灯的效果,通过依次实现呼吸灯来实现流水灯的效果。如有问题,欢迎在评论区讨论,后续将继续更新其他模块的代码。໒( = ᴥ =)ʋ。注:图片来自于江科大,本日志只需要A0--A3接口处的LED即可。以上就是日志三全部内容。
2024-12-09 18:51:11
672
1
原创 成为点灯大师的日志二——STM32之光敏传感器控制LED
利用电压比较器将电压二值化,随着光线变暗,光敏电阻阻值增大,分得电压增大,超过定值电阻电压则输出1,反之输出0。如有问题,欢迎在评论区讨论,后续将继续更新其他模块的代码。໒( = ᴥ =)ʋ。注:图片来自江科大,下图中的蜂鸣器在本日志中不需要接入。以上就是日志二全部内容。
2024-12-08 20:50:29
770
原创 OJ题目详解——1.8~01:矩阵交换行
给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。第6行包含两个整数m、n,以一个空格分开。(1 <= m,n <= 5)输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。
2024-12-08 15:52:59
246
原创 OJ题目详解——1.7~35:字符串的展开
在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。如果减号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,要保留中间的减号,例如:“d-d”应输出为“d-d”,“3-1”应输出为“3-1”。100%的数据满足:1
2024-12-08 15:52:38
362
原创 OJ题目详解——1.7~34:回文子串
回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。给定一个字符串,输出所有长度至少为2的回文子串。一个字符串,由字母或数字组成。输出所有的回文子串,每个子串一行。
2024-12-07 12:59:03
280
原创 OJ题目详解——1.7~33:判断字符串是否为回文
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。如果字符串是回文,输出yes;
2024-12-07 12:58:54
406
原创 OJ题目详解——1.7~32:行程长度编码
对于一个待压缩的字符串而言,我们可以依次记录每个字符及重复的次数。这种压缩,对于相邻数据重复较多的情况比较有效。例如,如果待压缩串为"AAABBBBCBB",则压缩的结果是(A,3)(B,4)(C,1)(B,2)。当然,如果相邻字符重复情况较少,则压缩效率就较低。现要求根据输入的字符串,得到大小写不敏感压缩后的结果(即所有小写字母均视为相应的大写字母)。一个字符串,长度大于0,且不超过1000,全部由大写或小写字母组成。即每对括号内部分别为字符(都为大写)及重复出现的次数,不含任何空格。
2024-12-06 17:44:01
363
原创 OJ题目详解——1.7~31:字符串p型编码
给定一个完全由数字字符('0','1','2',…,'9')构成的字符串str,请写出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说122344111的p型编码串为1122132431;00000000000可描述为"11个0",因此它的p型编码串即为110;100200300可描述为"1个1、2个 0、1个2、2个0、1个3、2个0",因此它的p型编码串为112012201320。输出该字符串对应的p型编码串。
2024-12-06 17:43:06
326
原创 OJ题目详解——1.7~29:ISBN号码
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
2024-12-05 20:40:19
223
原创 OJ题目详解——1.7~30:字符环
有两个由字符构成的环。请写一个程序,计算这两个字符环上最长连续公共字符串的长度。例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环;字符串“MADJKLUVKL”的首尾连在一起,构成一个另一个环;“UVKLMA”是这两个环的一个连续公共字符串。一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过255,且不包含空格等空白符。输出一个整数,表示这两个字符环上最长公共字符串的长度。
2024-12-05 20:39:21
327
原创 OJ题目详解——1.7~28:单词倒排
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。输入为一个字符串(字符串长度至多为100)。输出为按要求排序后的字符串。
2024-12-04 15:08:31
267
原创 OJ题目详解——1.7~27:单词翻转
只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。输入一个句子(一行),将句子中的每一个单词翻转后输出。翻转每一个单词后的字符串,单词之间的空格需与原文一致。
2024-12-04 15:07:54
809
原创 OJ题目详解——1.7~26:字符串最大跨距
有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10。想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。例如,S = "abcd123ab888efghij45ef67kl", S1="ab", S2="ef",其中,S1在S中出现了2次,S2也在S中出现了2次,最大跨距为:18。三个串:S, S1, S2,其间以逗号间隔(注意,S, S1, S2中均不含逗号和空格);S1和S2在S最大跨距;
2024-12-03 19:33:12
464
原创 OJ题目详解——1.7~25:最长最短单词
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。试输出第1个最长的单词和第1个最短单词。第1行,第一个最长的单词。第2行,第一个最短的单词。
2024-12-03 19:31:16
489
原创 OJ题目详解——1.7~24:单词的长度
注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。依次输出对应单词的长度,之间以逗号间隔。
2024-12-03 19:31:03
565
原创 OJ题目详解——1.7~23:过滤多余的空格
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。一行,一个字符串(长度不超过200),句子的头和尾都没有空格。
2024-12-02 19:33:22
359
原创 OJ题目详解——1.7~22:紧急措施
近日,一些热门网站遭受黑客入侵,这些网站的账号、密码及email的数据惨遭泄露。你在这些网站上注册若干账号(使用的用户名不一定相同),但是注册时使用了相同的email。你此时拿到了那份泄露的数据,希望尽快将自己的密码更改。策略如下:根据email找到你的用户名和密码,然后更改密码。用户名、密码、email均不含空格,且长度不超过50个字符。有若干行,每行为你的一个账号,包括:你的账号,修改后的密码(之间用单个空格分隔)。第一行为你的email地址,长度不超过50个字符且只包含字母、数字和‘@’符号。
2024-12-02 19:33:11
257
原创 OJ题目详解——1.7~21:单词替换
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输出只有 1 行,将s中所有单词a替换成b之后的字符串。第3行是a将被替换的单词b(长度 <= 100).第2行是待替换的单词a(长度 <= 100);s, a, b 最前面和最后面都没有空格.第1行是包含多个单词的字符串 s;
2024-12-02 19:32:59
214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人