- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 数据结构---排序、第K大数,第K小数(堆)
堆是一种特殊的完全二叉树,所有父点都比子结点要小称最小堆,反之,所有父点都比子结点大的成为最大堆。用堆来排序、删除、增加效率都比较高。另外用堆来求第K大数和第K小数都比较方便。只需要建立一个大小为K的堆,堆顶就是要求的第K大或第K小。例如:有5个数,要求第3小的数。首先任取三个数,例如前三个建立最大堆,然后从第4个数开始与堆顶比较,若比堆顶大,那么这个数就不要,若比堆顶小就和堆顶交换,重新...
2018-08-24 10:39:21 1976
原创 数据结构:迷宫寻宝----简单搜索
描述 数据结构一篇关于迷宫求解的问题,我想大家一定都没有做过,今天我们坏马啃回头草。虽然很无聊,但是能做出了,尤其不看书的情况下,那就有聊的了。输入有TN个测试数据;我会给你一个迷宫,我会将它表示成矩阵形式,其中‘#’表示墙,你是穿不过的。‘=’表示路,你当前所在的位置标记为‘Y’,你要去的地方标记为‘T’。第一行为TN,每个测试数据包含以下信息:第一行:行M,...
2018-08-22 19:40:15 844
原创 数据结构:二叉树的深度与叶子节点数
输入二叉树的先序序列,计算并输出该二叉树的深度与叶子节点个数。请将代码填写完整。例如,下面二叉树对应的先序序列为“AB#D##C##"。 A / \ B C \ D 输入 叉树对应的先序序列为。 输出二叉树的深度与叶子节点个数。样例输入AB...
2018-08-22 15:18:59 8272 1
原创 数据结构--一笔画问题
描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。 输入 第一行只有一个正整数N(N<=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶...
2018-08-22 15:05:19 2011
原创 简单搜索--马的走法
描述 在一个4*5的棋盘上,输入马的起始位置坐标(纵、横),求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字)。输入多个测试数据。 每组2个数,表示起始位置坐标。输出输出不同走法的总数。样例输入2 21 3样例输出45964772这道题可以直接用典型的DFS算法,把上下左右的方向换成马走法的规则就行。代码:...
2018-08-18 16:41:29 899
原创 数据结构---二叉树线索化&&双向链表
我们在创建二叉树时,每个结点都记录的左右孩子的地址,但却不知道前驱是谁,后继是谁。同时创建完会有很多空指针,为了方便记录下每个结点的前一个结点(前驱)和后一个结点(后继)是什么,便可以充分利用这些空指针域。例如一个结点没有左孩子,即它的左孩子指针指向空,这时我们可以让它的左指针指向它的前驱,若这个结点也没有右孩子,则这个结点的右指针指向它的后继。图示:(空心箭头实线指向前期,实心箭头虚线指...
2018-08-16 21:04:50 702
原创 数据结构---最小生成树之控制机器--prim算法
题目:现在有个一个内部局域网络,里面有N台机器。为了某种安全原因的考虑,每两台机器之间的通讯都是经过加密的。由于不同机器之间传输的内容不同,所以他们通讯采用的加密级别也不大相同。不同的加密级别导致破解的难度不一样,越高的加密级别破解需要的时间也越多。如果我们获得了编号为i的机器的完全控制权,另外我们破解了机器i和机器j之间的加密信息,那么我们就得到了机器j的完全控制权。 现在你通过...
2018-08-14 21:32:32 181
原创 数据结构----二叉树的建立和遍历
对于如何创建二叉树,假设我们要在内存中生成图6-9-1左一样的二叉树,为了确认每个结点是否都有左右孩子 ,我们对每个结点都进行扩展,如下右图,也就是把每个结点的空指针都引出一个虚结点,可以随意赋一个值。二叉树遍历的方法有:前序遍历void setplay(BiTree *T){ if (T->data==NULL) return; cout << ...
2018-08-11 21:21:35 327
原创 数据结构--希尔排序
希尔排序是一种基于插入排序的算法,通过把一个数组分成几个小数组,间隔为h,即:假设h为4 A B C D E F G H I J K F L M N O ① A--------------E-------------I------------L ② B-------------F------------J-...
2018-08-11 20:39:15 155
原创 数据结构--用链表栈实现括号的匹配问题
在结构化存储数据集是常常使用数组即顺序表,但当数据庞大时用数组往往比较繁琐,例如我需要在数组中间添加一个元素进去,则需要移动很多个元素,而且在定义数组大小时,小了会溢出,大了会浪费。而链表正是代替数组解决了这些问题。链表可以在O(1)的复杂度下处理删除,添加等问题,而且可以用指针来动态分配存储空间,不会出现空间浪费的情况例子:编写一个Stack的用例,从输入中读取一个文本流并使用栈...
2018-08-08 22:48:09 1103
原创 2018-百度之星程序设计大赛资格赛1002题解——子串查询--前缀和
题目:度度熊为了检验你是否具备不听课的资质,度度熊准备了一个只包含大写英文字母的字符串 A[1,n]=a1a2⋯anA[1,n] = a_1 a_2 \cdots a_nA[1,n]=a1a2⋯an,接下来他会向你提出 qqq 个问题 (l,r)(l,r)(l,r),你需要回答字符串 A[l,r]=alal+1⋯arA[l,r] = a_l a_{l+1} \cdots a_...
2018-08-06 17:46:17 249
原创 正方形(Squares,ACM/ICP Word Finals ,UVA)
有n行n列的小黑点,还有m条线段连接其中的一些小黑点。统计这些线段连成了多少个正方形(每种边长分别统计) 行从上到下的编号为1~n,列从左到右编号为1~n,边用H i j和V i j表示,分别代表边(i,j)_(i,j+1)和(i,j)_(i+1,j),如图下图所示最左边的线段用V 1 1表示。图中有包含两个边长为1的正方形和一个边长为2的正方形。 输入样例:416H ...
2018-08-02 21:53:26 615
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人