自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 2. 套圈(分治)

扔圆环是一种游戏,玩家需要将平面圆环扔向一些玩具,所有被圆环围住的玩具都会得到奖励。在虚拟游戏场地中,每个玩具的位置是固定的,而圆环被精心设计,只能一次性围住一个玩具。如果一个点与圆环的中心之间的距离严格小于圆环的半径,那么该点就被圆环围住。对于每个案例,第一行包含一个整数N(2 <= N <= 100,000),表示场地中的玩具总数。接下来是N行,每行包含一个(x, y)对,表示一个玩具的坐标。输出 对于每个测试案例,以一行输出所需的虚拟游戏场地经理所需的圆环半径,精确到小数点后两位。

2023-12-17 12:28:02 272 1

原创 2. 皇后的控制力

我们对八皇后问题进行扩展。国际象棋中的皇后非常神勇,一个皇后可以控制横、竖、斜线等4个方向(或者说是8个方向),只要有棋子落入她的势力范围,则必死无疑,所以对方的每个棋子都要小心地躲开皇后的势力范围,选择一个合适的位置放置。如果在棋盘上有两个皇后,则新皇后控制的势力范围与第一个皇后控制的势力范围可以进行叠加,这样随着皇后数量的增加,皇后们控制的范围越来越大,直至控制了棋盘中全部的格子。

2023-12-16 23:02:36 345

原创 4. 无向图的各连通分支

输出每个连通分支的广度优先搜索序列(从连通分支的最小编号开始),不同分支以最小编号递增顺序列出。第一行为图的节点数n(节点编号0至n-1,0

2023-11-26 15:35:30 346

原创 3. 迷宫问题

迷宫有一个入口,一个出口。一个人从入口走进迷宫,目标是找到出口。阴影部分和迷宫的外框为墙,每一步走一格,每格有四个可走的方向,探索顺序为地图方向:南(下)、东(右)、北(上)、西(左)。输入:输入迷宫数组。第一行数据表示一个 n*n (n<=100)的迷宫;第二行开始的n行为迷宫数据。其中:0表示路,1表示墙,起点在左上角 <1,1> 的位置,终点在右下角 <n,n> 的位置。输出:若有解,输出从入口到出口的一条路径,否则输出 there is no solution!例(上图所示的迷宫数组)

2023-11-26 14:47:19 337

原创 1. 图的广度优先遍历

输入是图的顶点序列和边序列(顶点序列以*为结束标志,边序列以-1,-1为结束标志)。程序的输出为图的邻接表和广度优先遍历序列。本实验实现邻接表表示下无向图的广度优先遍历。

2023-11-25 16:16:32 124

原创 3. 快速排序

要求根据给定输入,按照课堂给定的快速排序算法进行排序,输出排序结果和median3的返回值。注:1,cutoff值为5,不足cutoff使用插入排序。2,输入、输出格式参见测试用例0。

2023-10-31 11:42:07 226

原创 2. 堆排序

实验要求:用堆排序算法按关键字递减的顺序排序。程序输入:待排序记录数(整数)和待排序记录(整数序列);程序输出:建堆结果和建堆后第一、第二次筛选结果。(注:待排序记录数大于等于3)

2023-10-31 10:37:17 118

原创 1. 折半查找

折半查找的查找过程:先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。每条待查记录包含关键字项和其他项,如关键字项为15,其他项为该记录在查找表里的原序号4。对无序表的查找,还需要事先排列成有序表,再进行折半查找。输入:5 (记录的条数)各记录项:如 32 1输出:已按关键字排列好的非递减序列:如 (16 2)(20 5)(32 1)(35 3)(91 4)找不到时输出: error。

2023-10-31 10:22:23 88

原创 2. 计算WPL

根据哈夫曼树,我们可以为叶子节点分配相应的哈夫曼编码,使得编码长度短的更常见,这样可以有效地减少编码的总长度,达到数据压缩的目的。这里的带权路径长度就是叶子节点的权值与它到根节点的路径长度之积的总和。2. 在所有未构造二叉树的集合中选出两个权值最小的树作为左右子树,构造出一棵新的二叉树,同时这两个权值之和作为新的父节点的权值。以二叉树为例,叶子节点是没有子节点的节点,而根节点是最顶层的节点。1. 对每个叶子节点,计算根节点到该叶子节点的路径长度,即从根节点到叶子节点所经过的边的数量。

2023-10-24 11:09:29 1338

原创 1. 前缀码判定

请编写一个程序,判断输入的n个由1和0组成的编码是否为前缀码。如果这n个编码是前缀码,则输出"YES”;否则输出第一个与前面编码发生矛盾的编码。前缀码:任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。每一个字符均不是其他字符编码的前缀,所以,输出:YES。编码11与前面的编码110的前缀,所以,输出:11。第2~n+1行为n个由0或1组成的编码。第1行为n(表示下面有n行编码)

2023-10-24 10:45:58 255

原创 AVL树(基本操作代码)

【代码】AVL树(基本操作代码)

2023-10-19 16:23:43 83

原创 3. 平衡二叉树

程序输入一个字符串(只包含小写字母),请按照字符的输入顺序建立平衡二叉排序树,并分别输出二叉树的先序序列、中序序列和后序序列,最后输出该二叉树向左旋转 90 度后的结构。

2023-10-17 21:32:51 336

原创 2. 排序二叉树

排序二叉树是指左子树的所有节点的值均小于它根节点的值,右子树的所有节点的值均大于它根节点的值,如下图是一棵排序二叉树。输入有一行,表示若干个要排序的数,输入0时停止。建立并中序遍历一个排序二叉树。和二叉树的中序遍历序列。

2023-10-17 21:22:10 283

原创 1. 树的建立与基本操作

程序的输入是一个表示树结构的广义表。假设树的根为 root ,其子树森林 F = ( T1 , T2 , … , Tn ),设与该树对应的广义表为 L ,则 L =(原子,子表 1 ,子表 2 , … ,子表 n ),其中原子对应 root ,子表 i ( 1

2023-10-14 10:17:09 329

原创 3.二叉树遍历序列还原

给出二叉树的中序遍历序列和后序遍历序列,编程还原该二叉树。第1行为二叉树的中序遍历序列。第2行为二叉树的后序遍历序列。二叉树的按层遍历序列。

2023-10-12 21:19:20 356

原创 Day08-面向对象

类的组成是由属性和行为两部分组成属性:在类中通过成员变量来体现(类中方法外的变量)行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)类的定义步骤:①定义类②编写类的成员变量③编写类的成员方法public class 类名 {// 成员变量变量1的数据类型 变量1;变量2的数据类型 变量2;// 成员方法方法1;方法2;

2023-10-08 16:53:40 96

原创 4.从中缀向后缀转换表达式

中缀表达式就是我们通常所书写的数学表达式,后缀表达式也称为逆波兰表达式,在编译程序对我们书写的程序中的表达式进行语法检查时,往往就可以通过逆波兰表达式进行。总之,左括号和指数运算符在中缀表达式转换为后缀表达式的过程中需要被特殊处理,它们需要优先级高于其他运算符,并在栈中保持相对应的位置,以确保后续的处理和计算的正确性。为了简化编程实现,假定变量名均为单个字母,运算符只有+,-,*,/ 和^(指数运算),可以处理圆括号(),并假定输入的算术表达式正确。(A 一 (B*C 十 D)*E) / (F 十 G )

2023-10-04 16:25:50 499

原创 1. 括号匹配

假设一个算术表达式中包含圆括号、方括号两种类型的括号,试编写一个判断表达式中括号是否匹配的程序,匹配返回Match succeed!,否则返回Match false!。例[1+2*(3+4*(5+6))]括号匹配(1+2)*(1+2*[(1+2)+3)括号不匹配。

2023-10-04 10:21:21 117

原创 2.出栈序列

每组数据中,第一行为两个个整数 n 和 m。n 表示需要依次从 1~n 入栈,m 表示这组数据有 m 个出栈序列需要判断,当 n=0 且 m=0 时停止。对每一个出栈序列,如果能正常出栈,输出Yes,否则输出 No。求解规定序列能否由入栈出栈操作得到。接下来有行,每行表示一个出栈序列。

2023-10-02 16:55:37 173

原创 Day05-循环高级和数组

数据类型 [] 数组名比如:int [] array。

2023-09-28 19:16:09 131

原创 2. 孤独的运货员

卸货的过程是:首先查看最外面的箱子是否标记着 X 标签,如果是,代表这是运送到 X 国的货物,则放到 A 平台上,如果不是,则把该货箱放到B平台货物队列的末尾,然后处理下一箱货。每天,货车和货运飞机都这样周而复始的运行着,直到有一天因为报酬的原因,分理中心的工人开始罢工。航空公司的货运飞机往返于各个国家和货物分理中心之间,分理中心的货物运送到各个国家,再将各个国家发出的货物送到分理中心。从第二行往后一共有 N 行,每行一的第一个数字代表该站 B 平台上货物的总数,之后的每个数字代表每箱货物运送到哪个站。

2023-09-26 21:21:39 298

原创 4.一元多项式相乘

要求采用链表形式,求两个一元多项式的乘积:h3 = h1*h2。函数原型为:void multiplication( NODE * h1, NODE * h2, NODE * h3 )。每个一元多项式以指数递增的顺序输入多项式各项的系数(整数)、指数(整数)。以指数递增的顺序输出乘积: <系数,指数>,<系数,指数>,<系数,指数>,例如:1+2x+x2表示为:<1,0>,<2,1>,<1,2>,说明:本题目有预设代码,只要提交你编写的函数即可。零多项式的输出格式为:<0,0>,

2023-09-26 20:45:47 316

原创 3.一元多项式相加

编写一元多项式加法运算程序。要求用线性链表存储一元多项式(参照课本)。输出:显示三个输入多项式Pa、Pb、Pc、和多项式Pa+Pb、多项式Pa+Pb+Pc。多项式A包含的项数,以指数递增的顺序输入多项式A各项的系数(整数)、指数(整数)多项式B包含的项数,以指数递增的顺序输入多项式B各项的系数(整数)、指数(整数)多项式C包含的项数,以指数递增的顺序输入多项式C各项的系数(整数)、指数(整数)输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc。对应一组输入,输出一次操作的结果(参见测试用例)。

2023-09-26 13:10:41 224

原创 1. 综教楼后的那个坑

每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。*    ********* 4

2023-09-26 12:01:43 132

原创 3. 双向约瑟夫问题

已知 n 个人(不妨分别以编号 1,2,3,...,n 代表 )围坐在一张圆桌周围,首先从编号为 k 的人从 1 开始顺时针报数,1, 2, 3, ...,记下顺时针数到 m 的那个人,同时从编号为 k 的人开始逆时针报数,1, 2, 3, ...,数到 m 后,两个人同时出列。然后从出列的下一个人又从 1 开始继续进行双向报数,数到 m 的那两个人同时出列,...;则输出:4-6,2,1-3,5,。其中第2次只输出一个2,表示第二次双向报数时,恰好都落在编号2上,所以只有一个编号出列。

2023-09-19 14:34:38 157

原创 4. 基本操作(集合合并)

编程要求:题目中已经给出了主函数和部分已经实现的基本操作,请阅读给出的程序,编写其他尚未完成的基本操作(基本操作的定义请参见严蔚敏老师的教材)。我们讨论一个如何使用基本运算将两个集合合并的问题。下面,是采用基本操作完成集合合并的操作。设:有两个集合A和B分别用两个线性表LA和LB表示。求一个新的集合 A=A∪B。:提交代码的时候,仅需提交你编写的那三个基本操作函数即可。问题: 线性表的合并A=A∪B。按照要求合并后的集合。

2023-09-19 14:06:30 340

原创 2.求循环小数

M ),均可以求出对应的小数。如果采用链表表示各个小数,对于循环节采用循环链表表示,则所有分数均可以表示为如下链表形式。仅编写将分数转换为小数的函数 change( int n, int m, NODE * head )。对于任意的真分数 N/M ( 0 < N。转换后的小数(不超过 50 )

2023-09-19 11:41:26 401

原创 1.验证表

本实验编写具有如下功能的程序:输入两个学生记录表LIST1,LIST2,在表LIST2中找出所有没有在表LIST1中出现的学生记录(设表LIST1为基础数据表,非空)。如果学生记录表LIST2中的存在学号,姓名不能与表LIST1完全匹配的记录,则输出 学号(%8d)姓名(%15s)is not in LIST1.如果学生记录表LIST2中的记录都包含在LIST1中,则输出the records of LIST2 are all in the LIST1.

2023-09-19 11:22:19 228

原创 Day04-程序控制语句

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形 成死循环。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

2023-09-17 16:34:48 68

原创 代码随想录训练营第四十八天|198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

打家劫舍是DP解决的经典题目也是入门级题目,后面还会变种方式来打劫的。213.打家劫舍II力扣题目链接(opens new window)你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到的最高金额。

2023-09-17 12:52:54 156

原创 Day03-运算符

分类:+ - * / % 这些操作跟小学数学几乎是一模一样的。注意点:/ 和 % 的区别:他们两个都是做除法运算,/取结果的商。% 取结果的余数。整数操作只能得到整数,如果想要得到小数,必须有浮点数参与运算。算术运算符的高级用法:是以+为例进行的讲解,其余减法,乘法,除法的运算规则也是一样的。特例:字符串只有+操作,没有其他操作。&& 和 & 、||和|的运行结果都是一模一样的。但是短路逻辑运算符可以提高程序的运行效率。

2023-09-15 20:11:58 129

原创 Homework 1

北理工《数据结构与算法分析:C语言描述》习题答案

2023-09-14 10:51:35 149

原创 1. 约瑟夫问题

已知n个人(不妨分别以编号1,2,3,…,n 代表 )围坐在一张圆桌周围,从编号为 k 的人开始,从1开始顺时针报数1, 2, 3, ...,顺时针数到m 的那个人,出列并输出。然后从出列的下一个人开始,从1开始继续顺时针报数,数到m的那个人,出列并输出,…依此重复下去,直到圆桌周围的人全部出列。按照出列的顺序依次输出出列人的编号,编号中间相隔一个空格,每10个编号为一行。输出:k should not bigger than n.输出:4 6 8 1 3 7 2 9 5。输入:n, k, m。

2023-09-12 14:01:39 419

原创 背包问题总结

背包问题最关键的两步:递推公式和遍历顺序。如果把我本篇总结出来的内容都掌握的话,对背包问题理解的就很深刻了,用来对付面试中的背包问题绰绰有余。

2023-09-10 12:17:59 281 1

原创 27.方向标

BIT小学期程序设计方法与实践

2023-09-08 14:10:27 595

原创 30. 有一个人前来买瓜

BIT小学期程序设计方法与实践

2023-09-08 11:17:35 750

原创 29. 一道简单背包题

BIT小学期程序设计方法与实践

2023-09-07 15:12:33 673

原创 26.篮球练习

BIT小学期程序设计方法与实践

2023-09-07 11:34:07 1253

原创 28.考试

BIT小学期程序设计方法与实践

2023-09-07 11:10:32 754

原创 LeetCode127. 单词接龙

需要注意的是,unordered_set的插入和查询操作的平均时间复杂度是O(1),但最坏情况下的时间复杂度是O(n),其中n是unordered_set中的元素个数。需要注意的是,unordered_set和unordered_map是基于哈希表实现的,因此元素的顺序是不确定的,不同的编译器和不同的运行环境可能会有不同的顺序。首先题目中并没有给出点与点之间的连线,而是要我们自己去连,条件是字符只能差一个,所以判断点与点之间的关系,要自己判断是不是差一个字符,如果差一个字符,那就是有链接。

2023-09-06 18:53:40 233

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除