- 博客(49)
- 收藏
- 关注
原创 遍历完全二叉树【C语言】
给定一棵有n(n≤1000)个元素的完全二叉树,分别对其进行先序、中序和后序遍历,输出对应的遍历序列。第一行一个整数n,表示这棵完全二叉树的元素数目;第二行是n个整数,分别表示这棵二叉树上的元素值。输出为三行,第一行是先序遍历序列,第二行是中序遍历序列,第三行是后序遍历序列。例如给定完全二叉树:1 2 3 4 5 6。先序序列:1 2 4 5 3 6。中序序列:4 2 5 1 6 3。后序序列:4 5 2 6 3 1。
2025-05-28 20:26:13
116
原创 折半查找【C语言】
给定一个长度为n(n≤10000)的单调递增整数数列,和要查找的整数,利用折半查找算法找到该数据。输出成功找到该数据所需的比较次数;如果查找未成功,则输出0。输入数据为两行,第一行两个整数,第一个整数n表示序列的长度,第二个整数data,表示要查找的数据。输出一个整数,如果找到数据,则输出找到该数据所花的比较次数;如果没有找到该数据,输出0。上述序列如果要查找60,则应输出0(查找未成功)要查找25,则查找次数为2次。要查找31,则查找次数为4次。要查找17,则查找次数为4次。
2025-05-28 20:13:02
106
原创 骑马修栏杆【C语言】
我们如果把输出的路径看成是一个500进制的数,那么当存在多组解的情况下,输出500进制表示法中最小的一个 (也就是输出第一个数较小的,如果还有多组解,输出第二个数较小的,等等)。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束。每一个栅栏连接两个顶点,顶点用1到500标号(虽然有的农场并没有500个顶点)。所有栅栏都是连通的(也就是你可以从任意一个栅栏到达另外的所有栅栏)。
2025-05-28 20:06:40
213
原创 高考志愿排序【C语言】
我国的高考志愿投档是严格按照高考分数从高到低的顺序排列,排列的规则如下:首先按照总分降序排列;这样,每个考生的位序都是唯一的。第一行是两个整数n和m,表示后续有n个考生的信息,要求输出m个考生的序号。从第2行到n+1行,每行一个考生的信息,依次是:语文分、数学分、英语分。注意:学生的序号从1开始计数,就是它所在的行号减一。现在给定n(10≤n≤1000)个人的有关信息,按照上述规则排序之后,输出最前面的m(1≤m≤n)个人的序号。输出m个整数,表示排序后的前m个考生的序号,整数之间用空格分隔。
2025-05-28 10:05:27
306
原创 城市公交网建设问题【C语言】
有一张城市地图,图中的顶点为城市,无向边代表两个城市间的连通关系,边上的权为在这两个城市之间修建高速公路的造价,研究后发现,这个地图有一个特点,即任一对城市都是连通的。现在的问题是,要修建若干高速公路把所有城市联系起来,问如何设计可使得工程的总造价最少?n(城市数,1<≤n≤100)e(边数)以下e行,每行3个数i,j,wij(wij≤3000),表示在城市i,j之间修建高速公路的造价。一个整型数,表示得到的最小工程造价。
2025-05-27 15:30:17
142
原创 字符串逆序【C语言】
给定的字符串长度不超过1000,其中只包含大小写字母、数字、英文标点符号以及空格,不包含中文字符;回车符作为结束符,不计算在字符串内。例如,输入“abcd”,输出“dcba”;输入“Hello”,输出“olleH”一个长度不超过1000个字符的英文字符串,不包含任何中文字符。一个字符串,上述这个字符串的逆序。给定一个字符串,将其逆序输出。
2025-05-27 15:04:16
154
原创 成绩排序【C语言】
第一行是一个整型数n,表示后面有n个学生的数据。从第二行到第n+1行,每行表示一个学生的数据,第一列是学生的姓名,第二列是学生的成绩(都是100以内的正整数),中间以空格分隔。给定n(1≤n≤100)个学生的姓名和成绩,按照成绩从高到低排序输出。学生的姓名不会重复,如果有成绩相同的,则原来在名单中靠前的同学仍然排列在前面。排序得到的结果,每行一个学生的数据,第一列是姓名,第二列是他的成绩,中间以空格分隔。注意:Rene排在Prudenc之前,Cynthi排在Nicol之前。
2025-05-27 14:52:27
109
原创 完全二叉数求祖先节点
共三行,第一行一个整数n(1≤n≤500),表示完全二叉树的节点数目。第二行有n个整型数,表示完全二叉树中节点中存储的数据,数据之间以空格分隔。第三行为一个整型数,表示要求祖先的这个节点数据,测试集保证该数据在二叉树中唯一存在且不是根节点,如有多个相同数据,以最后一个为准。例如有完全二叉树:38 14 23 56 44 89 5 21 63 38 79,节点79的祖先依次是:38 14 44。按照层次遍历的顺序给定一棵完全二叉树上的所有节点,求其中某一个节点所有的祖先节点。数据之间以空格分隔。
2025-05-09 09:09:47
164
原创 二叉排序数
给定若干个互不相同的整型数,要求按照输入的顺序建立一棵二叉排序树(即先输入的数据要先插入到二叉排序树中),然后用先序遍历的方式访问这棵二叉排序树,输出得到的先序序列。两行,第一行一个正整数n(1≤ n≤ 1000),表示二叉树节点的数目。第二行是n个正整数,题目保证这些数据不会重复,数据之间用空格分隔。建立二叉排序树之后访问得到的先序序列为:335 213 395 374 370 878 566 864 621 736。一行,n个正整数,按照二叉排序树的先序序列输出,中间以空格分隔。
2025-05-08 17:54:46
217
原创 求二叉树的高度
上面的数据中,每一行表示一个节点;第一列表示这个节点的存储位置;第二列表示这个节点左孩子的存储位置,如果没有左孩子,这个值为-1;第三列表示右孩子的存储位置,如果没有右孩子,这个值为-1。依次表示该节点的存储位置、左孩子的存储位置、右孩子的存储位置。二叉树的所有节点中深度的最大值称作该树的高度,约定根节点的深度为1,空树的高度为0。第一行是一个正整数n,表示整棵二叉树有多少个节点。给定一棵由静态链表存储的二叉树,求这棵二叉树的高度。所有节点的存储位置按照从小到大依次排列。一个整数,表示二叉树的高度。
2025-05-08 12:40:17
125
原创 神奇的化合物
在遥远的外星球上,所有的化合物都是通过两个单质元素或者两个化合物或者一个单质元素一个化合物结合而成,任意的单质元素或者化合物都具有特定的结合能,其中单质元素的结合能是预先固定的,而化合物的结合能则是构成它的两种物质的结合能之和。比如某化合物由3种单质构成,3种单质的结合能分别是2、4、6,则先将第一种和第二种结合,得到的化合物再与第三种单质结合,所需的总能量为18,这就是所需的最少能量。第二行有n个正整数,每个正整数表示一种单质的结合能,所有单质的结合能都小于100。
2025-05-06 18:35:59
151
原创 计算鞍点【C语言】
给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"。例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。输入包含一个5行5列的矩阵。
2025-05-06 17:27:18
179
原创 机器翻译【C语言】
对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。第二行为N个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M−1,软件会将新单词存入一个未使用的内存单元;若内存中已存入M 个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。
2025-04-22 21:59:40
174
原创 十进制转二进制【C语言】
给定一个十进制的正整数n(0≤n≤100,000,000),转换为对应的二进制数据。例如十进制:123456,转换为二进制为:11110001001000000。例如十进制:1024,转换为二进制为:10000000000。例如十进制:258,转换为二进制为:100000010。例如十进制:123,转换为二进制为:1111011。
2025-04-22 21:08:57
169
原创 二进制转十进制
例如二进制数:110100101,转成十进制数是:421。例如二进制数:110110110,转成十进制数是:438。给定一个正的二进制数,将其转换为十进制数输出。一个正的二进制数,其长度不超过31位。
2025-04-22 21:04:36
152
原创 IP地址转换(二)
IP地址是用“.”分割的四段整数,每段值都在0~255之间。一般情况下这四段整数用十进制数表示,如:204.148.21.114。实际上,它也可以用二进制表示,如:11001100.10010100.00010101.01110010。例如给定一个IP地址:91.45.81.235,对应的二进制IP地址为:01011011.00101101.01010001.11101011。现在给定用十进制表示的IP地址,请转换成二进制表示的IP地址输出。每个二进制数都应占8位,不足的高位补零。对应的二进制IP地址值。
2025-04-19 21:44:55
231
原创 IP地址转换(一)
IP地址是用“.”分割的四段整数,每段值都在0~255之间。一般情况下这四段整数用十进制数表示,如:204.148.21.114。实际上,它也可以用二进制表示,如:11001100.10010100.00010101.01110010。现在给定用二进制表示的IP地址,请转换成十进制表示的IP地址输出。例如给定一个IP地址:11000000.10101000.00000000.00000010,对应的十进制IP值为:192.168.0.2。一行数据,由圆点分隔的四段二进制IP地址。对应的十进制IP地址。
2025-04-19 21:31:25
174
原创 汉诺塔问题
目的是将最左边杆上的碟子全部移到最右边的杆上,条件是一次只能移动一个碟子,且不允许大碟子放在小碟子的上面,任何大小的碟子都可以直接放在柱子上面,中间的柱子可以作为中转站。可以计算得出64个碟子最少的移动次数是:18,446,744,073,709,551,615。三根柱子的编号是A、B、C,最开始所有的碟子都放在A柱上,要把所有的碟子按照上面的规则移动到C柱上。现在给定n(1≤n≤ 10)个碟子,请求出第m(1≤m≤2^n-1 )步是移动第几号碟子,从哪根柱子移动到哪根柱子。
2025-04-17 20:26:15
137
原创 括弧匹配检验
输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK。假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如 () 或 [([][])] 等为正确的匹配,[(]) 或( 或 (([)]) 均为错误的匹配。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?匹配就输出 “OK” ,不匹配就输出“Wrong”。输入仅一行字符(字符个数小于255)。
2025-04-17 20:18:10
199
原创 对称素数(题目+代码)
有这样一种整数,它自身是素数,翻转过来之后还是个素数,这种数被称为对称素数。比如157是素数,翻转过来之后的751也是素数。类似的数据还有:107和701,149和941,199和991等。给定一个区间[s,t],其中10≤s≤t≤1,000,000,求出该区间内所有的对称素数的个数。如果一个素数和它对称的素数同时出现在这个区间中,那么仍然应该计算两次,比如[10,99]中17和71就出现了两次(分别是17,71 和71,17)。在[10,20]中,这样的对称素数有3对;
2025-04-15 22:18:40
244
原创 猴子选大王
有n只猴子(编号从1到n),按顺时针方向围成一圈选大王。规则是从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样重复下去,直到圈内只剩下一只猴子时,这只猴子就是大王。例如有100只猴子,数到14就退出,最后剩下的猴子是92号。
2025-04-03 19:59:59
219
原创 通配符(一)
Windows操作系统在查找文件时,文件名的匹配支持两种通配符:一种通配符是问号(“?”),它匹配任意的一个字符;一种通配符是星号(“*”),它匹配任意长度的任意字符。例如,有模板串:“win*”,它能匹配“windows”“window”“win”“wind”等正文串,但是不能匹配“wifi”“will”“with”“nowindows”这些串。
2025-04-03 19:51:34
157
原创 身份证号码验真(一)
i表示号码字符从左至右包括校验码字符在内的位置序号;ai表示第i位置上的号码字符值;Wi表示第i位置上的加权因子。即将各位上的数值乘上位权之和对11取余,余数为1则表示该编码正确。注意:如果最后一位校验码是“X”或“x”,则代表该校验码的数值为10。各位的权值依次是:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1例如某身份证号码为:370683198901117657,这是正确的编码。又比如身份证号:43038120051120041X,这是正确的编码,
2025-04-03 19:46:58
168
原创 扑克牌魔术
东哥是个乡村魔术师,COVID-19疫情期间闲来无事,用扑克牌给邻居们表演了一场小魔术:他将一叠预先洗好的扑克牌背面朝上拿在手中,先将最上面的扑克牌放到最下面,然后打开现在最上面的这张扑克牌,并放到边上,这是一张1;然后又将最上面的扑克牌放到最下面,再次打开最上面的扑克牌,这次是一张2;他依次重复这两个步骤:(1)将最上面的放到最下面,(2)打开最上面的这张扑克牌,最终打开的扑克牌依次是:1,2,3,4……
2025-04-03 11:55:42
195
原创 统计单词长度
输入一个由英文单词组成的字符串,用空格作为分隔符,将每个单词的长度计算出来并形成一个新列表,并统计所有单词的平均长度,平均长度四舍五入取整。例如给定"I am a boy",应输出:[1,2,1,3] 平均长度为2。再给定"I can’t fly",应输出:[1,5,3] 平均长度为3。
2025-04-03 07:24:33
313
原创 字符种类统计
统计一个字符串中数字、字母、空格及其他符号的个数。字符串长度不超过1000。例如输入"Hello 123@World",其中有3个数字,10个字母,1个空格,1个其他符号。
2025-04-03 07:12:10
158
原创 判断出栈序列合法性
有1、2、3、4、5、6、7这7个数字依次全部入栈后再出栈,在入栈的过程中栈中的数据也可以随时出栈,一直到整个栈为空。将出栈得到的数字依次排列,就可以得到一个“合法”的序列;对应的,有些形式的排列是无论如何调整入栈和出栈顺序也无法得到的,被称为“非法”序列。比如:“1 2 3 4 6 7 5” 和“1 2 5 6 4 3 7”都是合法的序列,而“1 2 5 7 3 4 6”和“1 2 6 3 4 5 7”以及“1 2 6 3 5 4 7”都是非法的序列。
2025-04-02 22:09:06
149
原创 求解一元三次方程组
形如: ax^3+bx^2+cx+d=0 这样的三次方程,给出该方程中各项的系数(a,b,c,d均为实数),请求出该方程在指定范围内的一个根。例如方程:2x^3+3x^2+4x+5=0,在[-10,10]范围内有一个根为-1.371134。测试集给定的范围保证刚好有一个根。比如输入:-3 0则根为:-0.856541又比如输入:-3 0则根为:-1.534508。
2025-04-02 22:01:20
142
原创 右螺旋阵(题目+代码)
一个nm的右螺旋阵是一个顺时针方向旋转,从1开始依次填写数字直到nm为止的矩阵(类似于蚊香盘)。例如一个4*4的右螺旋矩阵是下面这个样子的:1 2 3 412 13 14 511 16 15 610 9 8 7再比如一个4行5列的右螺旋矩阵是下面这个样子的:1 2 3 4 5。
2025-04-02 21:50:19
211
原创 康托尔三角(一)
康托尔三角是由著名数学家康托尔设计的一个整数三角,可以用来证明所有有理数与自然数一一对应,亦即有理数集是一个可数集。康托尔三角的构造如下:36 38 5337 5455它的填充规律是:将自然数按照从小到大的顺序从左上角往右下角按照蛇形排列:从左下到右上,再从右上到左下,每当到达边界之后就改变填充方向。按照这种方式填充的三角形,给定行值和列值之后,填充的自然数是确定的。规定行值和列值均从1开始计算。用(行,列)的方式进行描述。
2025-04-02 08:45:32
182
原创 康托尔三角(二)
康托尔三角是由著名数学家康托尔设计的一个整数三角,可以用来证明所有有理数与自然数一一对应,亦即有理数集是一个可数集。康托尔三角的构造如下:36 38 5337 5455它的填充规律是:将自然数按照从小到大的顺序从左上角往右下角按照蛇形排列:从左下到右上,再从右上到左下,每当到达边界之后就改变填充方向。按照这种方式填充的三角形,给定行值和列值之后,填充的自然数是唯一确定的。规定行值和列值均从1开始计算。用(行,列)的方式进行描述。
2025-04-02 08:40:09
276
原创 任意进制转换
输入一个十进制的正整数n(1≤n≤1,000,000,000),和一个进制r(2≤r≤36),要求将n转换为r进制的数据输出。当r大于10时,转换出来的数据中10用字母’A’表示,11用字母’B’表示,以此类推,36用字母‘Z’表示。例如当n=123,r=2时,转换出来的数据为:1111011;当n=1615,r=16时,转换数据为:64F;当n=285,r=32时,转换出来的数据为:8T;当n=300,r=36时,转换出来的数据为:8C。
2025-04-01 22:31:44
148
原创 出现次数最多的字母
给定一个仅由大写字母、小写字母和空格组成的字符串,找出其中出现次数最多的字母。例如字符串"Good morning",其中字母"o"出现了3次,次数最多。再比如"Good evening Austin and Jack",其中字母"n"出现了4次,次数最多。如果一个字符串中出现次数最多的字母有多个,则以编码值小的字母为准。例如字符串"Good evening Lisa and Jack"中,字母"a"和"n"都出现了3次,"a"的编码值比"n"小,应以"a"为准。
2025-04-01 22:21:47
174
原创 重复选课的学生
学校开放了两门选修课,规定每位同学只能选择其中一门。但是有些同学不遵守规定,同时选择了两门课程,现在选课名单汇总出来了,请你根据名单将同时选择了两门课程的同学挑选出来,并按照字典顺序升序排列。例如,选择了A课程的同学有:Christia Natha Elija Ale Loga Jame Gabrie,选择了B课程的同学有:Joh Natha Elija Ale Rya Hayde,重复选课的同学是:Ale Elija Natha。
2025-04-01 15:08:49
231
原创 合并数据(二)
有两个整数序列,将其合并,去除其中重复元素,得到一个严格单调递减序列。例如有序列2,4,2,1,4和1,5,4,5,5,2,将其合并后得到的递减序列为:5,4,2,1又比如有序列:1,6,3,6,1,1,7 和 3,7,8,7,1,8,5,8,合并后得到的递减序列为:8,7,6,5,3,1。
2025-04-01 14:52:37
122
原创 向上取整(题目+代码)
给定一个双精度浮点数,对其向上取整。向上取整规则如下:对于正数,取得不小于这个正数的最小的那个正整数。比如3.7,向上取整为4;2.01向上取整为3;5.0向上取整为5。对于负数,取得不大于这个负数的最大的那个负整数。比如-3.7,向上取整为-4;-2.01向上取整为-3;-5.0向上取整为-5。
2025-03-31 17:17:57
230
原创 去除重复元素
给定一个长度为n(2≤n≤1000)的整数序列,去除其中的重复元素并升序排列,输出结果。比如,n=10,整数序列为:5, 6, 6, 6, 6, 9, 3, 7, 5, 5,去除重复元素后的升序序列为:3, 5, 6, 7, 9又比如n=15,整数序列为:12, 12, 10, 9, 6, 11, 8, 5, 6, 3, 3, 7, 1, 11, 10,去除重复元素后的升序序列为:1, 3, 5, 6, 7, 8, 9, 10, 11, 12。
2025-03-31 17:15:09
240
原创 逆向输出链表
根据给定的数据建立一个由n(1≤n≤1000)个元素组成的链表,然后按逻辑顺序逆序输出其中所有的数据。每个元素节点由两个域组成:第一个域存储数据,第二个域存储后继元素所在的位置。特别的,头结点的第一个域用来存储整个链表的长度。例如头结点(5, 3)表示长度为5,后继元素在3号位置;元素节点(14,7)表示数据值为14,后继节点在7号位置。如果后继指针为0则表示链表结束。例如: (6, 6)(673, 4)(428, 1)(685, 2)(170, 0)(488, 3)(519, 5)
2025-03-31 17:13:44
967
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人