DS实验题 地鼠安家】的更多相关文章

★实验任务 fd是一个公认的美丽校园.一天,fd来了一群地鼠,编号为1到n,他们希望在这里定居.现在先由第一只地鼠往下打一个单位的距离,并且在那里安家.对于每一个已经安家的地鼠,如果他左下或右下没有邻居,那还没安家的地鼠就可以在他的左下或者右下安家.地鼠们已经建完所有的窝了,他们评价这些窝合格的标准是它们能不能形成一棵二叉搜索树(二叉搜索树的定义见课本).现在需要你帮助他们评估一下他们的窝挖的是否合格. ★数据输入 第1行一个整数n,表示地鼠总共n只.接下来一共n行,每一行三个数:l,o,r,其…
题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert)和删除最小(DeleteMin)这两种操作的数据结构.对应于队列的操作,Insert相当于Enqueue,DeleteMin相当于Dequeue. 链表,二叉查找树,都可以提供插入(Insert)和删除最小(DeleteMin)这两种操作,但是为什么不用它们而引入了新的数据结构的.原因在于应用前两者…
题目见前文:DS实验题 Old_Driver UnionFindSet结构 这里使用邻接表存储敌人之间的关系,邻接表用指针实现: // // main.cpp // Old_Driver3 // // Created by wasdns on 16/12/18. // Copyright © 2016年 wasdns. All rights reserved. // #include <iostream> #include <cstdio> #include <cstring…
参考:Dijkstra算法 数据结构来到了图论这一章节,网络中的路由算法基本都和图论相关.于是在拿到DS的实验题的时候,决定看下久负盛名的Dijkstra算法. Dijkstra的经典应用是开放最短路径优先路由算法(OSPF). 题目: 第一种实现的算法(错误): 在看过相关的Dijkstra算法解析之后,决定自己尝试写个算法,不过很遗憾,考虑并不全面,理解也不是特别深刻. 最后决定还是贴出来. 算法思想: 1.建立邻接表(后面用二维数组实现,相对来说轻松很多) 2.维护三个数组:dist代表从…
算法与数据结构实验题 6.3 sights ★实验任务 美丽的小风姑娘打算去旅游散心,她走进了一座山,发现这座山有 n 个景点, 由于山路难修,所以施工队只修了最少条的路,来保证 n 个景点联通,娇弱的小 风姑娘不想走那么长的山路,所以打算乘坐专用的交通工具.有的景点之间有路, 乘坐交通工具需要花费一定的金额. 由于到达景区之前已经花了一部分钱了,现在可爱的小风姑娘站在景点 1, 即根景点.按原计划她要去编号为 m 的景点,导游告诉她到景点 m 总共要花的钱 (包括来之前花的钱).然而善变的小风…
算法与数据结构 实验题 6.4 order ★实验任务 给出一棵二叉树的中序遍历和每个节点的父节点,求这棵二叉树的先序和后序遍历. ★数据输入 输入第一行为一个正整数n表示二叉树的节点数目,节点编号从1到n,其中1为根节点. 第2行有n个数字,第i个数字表示i的父亲节点.(1的父亲节点为0,表示无)第3行为中序遍历.30%的数据:n<=20:60%的数据:n<=1000:100%的数据:n<=10000: ★ 数据输出 输出2行,第一行为先序遍历,第二行为后序遍历. 输入示例 10 0…
题目: 思路: 这题是比较典型的树的遍历问题,思路就是将中序遍历作为位置的判断依据,假设有个节点A和它的父亲Afa,那么如果A和Afa的顺序在中序遍历中是先A后Afa,则A是Afa的左儿子,否则是右儿子. 用for遍历一遍所有的节点,让每一个节点都连接到它的父亲,最后从根节点开始访问即可. 代码: // // main.cpp // Tree // // Created by wasdns on 16/12/19. // Copyright ? 2016年 wasdns. All rights…
题目: 解题过程: 第一次做这题的时候,很自然的想到了冒泡和选择,我交的代码是用选择写的.基本全WA(摊手). 贴上第一次的代码: // // main.cpp // sequenceschange // // Created by wasdns on 16/10/7. // Copyright ? 2016年 wasdns. All rights reserved. // #include <iostream> #include <string> #include <cst…
题目: 提示:并没有精度问题. 原题 NOIP2010 导弹拦截 思路 设源点为A(x1, y1)和B(x2, y2). 第一步,用结构体存节点,包括以下元素: 1.横坐标x 2.纵坐标y 3.节点和A的距离平方len1:len1 = (x-x1) * (x-x1) + (y-y1) * (y-y1) 4.节点和B的距离平方len2:len2 = (x-x2) * (x-x2) + (y-y2) * (y-y2) 其中3和4在输入的时候计算. 第二步,假设所有的点都在源点A的圆圈范围:根据与A点…
题目: 代码1(数组实现): // // main.cpp // DS-击鼓传花 // // Created by wasdns on 16/11/9. // Copyright © 2016年 wasdns. All rights reserved. // #include <iostream> #include <cstdio> #include <cstdlib> #include <string.h> #include <string>…