- 博客(16)
- 收藏
- 关注
原创 【无标题】杭电OJ 1011题
每个测试用例的第一行包含两个整数 N(0<N<=100)和 M(0<=M<=100),分别是洞穴中的房间数量和您拥有的星际飞船士兵数量。一张地图为你绘制,所有的房间都标有里面虫子的数量,以及包含大脑的可能性。为了尽快结束战斗,你不想等士兵们清理完一个房间再前进到下一个房间,而是必须在每个经过的房间留下一些士兵来对抗里面的所有虫子。由于你没有足够的士兵,你只能拿走一些房间,让神经毒气来做剩下的工作。制定这样的计划是一项艰巨的工作。输出对于每个测试用例,在单行上打印所取房间包含大脑的所有可能性的最大总和。
2024-12-05 23:39:09
1176
原创 c语言基础之二维数组
比如一个 int arr[3][4] 这样的二维数组,就好像是一个 3 行 4 列的表格,总共能存放 12 个整数。在内存中,二维数组的存储是线性的,也就是说,虽然我们在逻辑上把它看作是行和列的组合,但实际上内存是依次连续存储这些元素的。先存储第一行的所有元素,然后再存储第二行,以此类推。例题:假设本学期学习5门课程,定义一个二维数组用来存储本班所有学生(假设有5人)的这5门课程的成绩。求每名学生5门课程的总成绩,并降序排序,输出对应的学号和总成绩,以此作为奖学金的评定依据。// 比较函数,用于排序。
2024-12-03 23:41:39
420
原创 两数之和问题——c语言
Leetcode官方题解给了两个方法,一个是暴力求解运用两个for循环嵌套求解,另一个是运用哈希查找的方法求解。以下我给出的题解是暴力求解,下面是实例代码,声明:leetcode官方题解给出的只有主函数代码并补全下面是完整的代码以及代码运行截图。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。整数,并返回它们的数组下标。
2024-12-02 23:24:01
885
原创 数据结构实训——排序
堆排序是利用堆(假设利用大根堆)的特性进行排序的方法,其基本思想是:首先将待排序的记录序列构造成一个堆,此时,选出了堆中所有记录的最大者即堆顶记录,然后将它和堆中最后一个记录交换,并将剩余的记录再调整成堆,这样又找出了次大的记录,以此类推,直到堆中只有一个记录为止。堆排序(Heap Sort)是简单选择排序的一种改进,改进的着眼点是:减少关键码的比较次数。堆排序利用每趟比较后的结果,也就是在找出关键码最小记录的同时,也找出关键码较小的记录,减少了在后面的选择中的比较次数,从而提高整个排序的效率。
2024-12-01 23:42:12
1162
原创 杭电OJ2044题
2044有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。其中,蜂房的结构如下所示。
2024-11-30 23:58:13
326
原创 数据结构实训——排序
快速排序(Quick Sort)是对起泡排序的一种改进,改进的着眼点是:增大记录的比较和移动距离,使关键码较大的记录一次就能从前面移动到后面,关键码较小的记录一次就能从后面移动到前面,记录移动的距离较远,从而减少了总的比较次数和移动次数。基本思想是:首先选一个轴值(即比较的基准),将待排序记录分割成独立的两部分,左侧记录的关键码均小于或等于轴值,右侧记录的关键码均大于或等于轴值,然后分别对这两部分重复上述过程,直到整个序列有序。// 将当前要插入的元素暂存到r[0],一般r[0]作为临时存储单元。
2024-11-29 23:32:41
1333
原创 数据结构实训——查找
折半查找的基本思想为:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间称为散列表(Hash Table),将关键码映射为散列表中适当存储位置的函数称为散列函数(Hash Function),所得的存储位置址称为散列地址。但是散列不是一种完整的存储结构,因为它只是通过记录的关键码定位该记录,很难完整地表达记录之间的逻辑关系,所以,散列主要是面向查找的存储结构。/*设元素r[o]为要查找的关键字k(即监视哨)*/
2024-11-28 22:49:19
1514
原创 【无标题】数据结构实训——线性表的链式存储
概要设计是对问题描述中涉及到的数据定义抽象数据类型,设计数据结构,设计算法的伪代码描述。在设计实训和综合实训中的问题描述通常都很简洁,因此,首先要充分理解问题,明确问题要求做什么,限制条件是什么,也就是对所需完成的任务做出明确的描述。很多初学者在编写程序后都有这样的心态:确信自己的程序是正确的,认为上机前的任务已经完成,检查错误是计算机的事。在详细设计阶段,需要设计具体的存储结构(即用C++描述抽象数据类型对应的类)以及算法所需的辅助数据结构,算法在伪代码的基础上要考虑细节问题并用 C/C++描述。
2024-11-28 11:00:00
1083
原创 尾插法建立单链表
单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含两部分:数据域和指针域。数据域用于存储节点的数据信息,指针域则存储下一个节点的地址(或称为链接)。单链表的头节点用于标识链表的起始位置,尾节点的指针域通常为 NULL ,表示链表的结束。尾插法是一种在链表中添加节点的方法。在链表中,每个节点包含数据部分和指向下一个节点的指针。尾插法就是每次将新节点添加到链表的末尾。今天我分享的是以尾插法建立单链表,至少插入5个不同的数据,完成输入与输出。printf("请输入%d个整数:",n);
2024-11-27 20:52:58
533
原创 杭电OJ——1009题
仓库有 N 个房间。第 i 个房间包含 J [i] 磅 JavaBeans,需要 F [i] 磅猫粮。FatMouse 不必交易房间里所有的 JavaBeans,相反,如果他支付 F [i]*a% 磅猫粮,他可能会得到 J [i]*a% 磅 JavaBeans。然后是 N 行,每行分别包含两个非负整数 J [i] 和 F [i]。输出:对于每个测试用例,在一行中打印一个精确到小数点后 3 位的实数,这是 FatMouse 可以获得的最大 JavaBean 数量。// 按照 J[i]/F[i] 非递增排序。
2024-11-26 23:59:38
989
原创 线性探测法解决冲突
哈希方法的核心是哈希函数。当通过哈希函数计算得到的哈希地址已经被占用时,线性探测法就会从该地址开始,依次向后探测,直到找到一个空闲的位置来存储新的数据。因为H(31)的地址5已经被H(57)给占用,那么H(31)就要继续向后探测直到地址8才有空位,那么H(31)的探测次数就是4次,同理H(36)本来的地址也被占用只能顺延不过原本的位置地址10后有地址11且恰好为空那么H(36)的探测次数是2,除了这两个外其余探测次数都为1。故ASL成功=(1+1+1+1+1+1+4+1+2+1)/10=14/10。
2024-11-26 15:36:15
681
原创 杭电OJ2000-2003题解析
EOF) { // 当从标准输入读取半径的值不为文件结束标志时,执行循环。Input:输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。Output:对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。Output:输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。Input:输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。Input:输入数据有多组,每组占一行,有三个字符组成,之间无空格。
2024-11-24 23:36:09
421
原创 杭电OJ 1089-1096
/ 定义多个整数变量,n 表示外层循环次数,m 表示内层循环次数,num 用于临时存储输入的数字,sum 用于求和。// 定义三个整数变量:n 表示要输入的数字个数,num 用于临时存储每次输入的数字,sum 用于累加求和。i++) { // 开始一个 for 循环,i 从 0 开始,每次循环递增 1,直到 i 达到 N。// 声明 4 个整型变量:N 表示循环次数,a 和 b 用于存储输入的两个数,i 用于控制循环。// 输出 a 和 b 的和,并换行。
2024-11-23 12:00:00
568
原创 数据结构实训——图的基本操作
设图G=(V,E)有n个确定的顶点,即V={v0,v1,…开始:从所有u∈U,v∈V-U的顶点中,选取具有最小权值的边(u,v),将顶点v加入集合U中,将边(u,v)加入集合T中,如此不断重复,直到U=V时,最小生成树构造完毕,这时集合T中包含了最小生成树的所有边。(4)若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。⑷ 若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
2024-11-22 18:49:13
855
原创 数据结构树的实训
(2) 从T中选两棵根结点的权值最小的二叉树,不妨设为Ti′、Tj′并作为左右子树构成一棵新的二叉树Tk’,并且置新二叉树的根值为其左右子树的根结点的权值之和。/* 递归调用的结束条件*//* 递归调用的结束条件*//* 递归调用的结束条件*//* 输出结点的数据域*/void InOrder(BT *T) /* 中序遍历二叉树T*/void PreOrder(BT *T) /* 先序遍历二叉树T*/
2024-11-21 17:15:23
1567
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人