
数据结构
浮生一朝
这个作者很懒,什么都没留下…
展开
-
L2-013. 红色警报(dfs)
L2-013. 红色警报战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0 < N <=500)和M(<=5000),分别为城市个数(于是...原创 2018-03-14 21:25:51 · 306 阅读 · 0 评论 -
7-7 笛卡尔树(25 分)(二叉排序树+最小堆)
笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次所有结点的K2关键字满足优先队列(不妨设为最小堆)的顺序要求,即该结点的K2值比其子树中所有结点的K2值小。给定一棵二叉树,请判断该树是否笛卡尔树。 输入格式:输入首先给出正整数N(≤1000),为树中结点的个数。随后N行,每行给出一个...原创 2018-03-20 20:36:11 · 1746 阅读 · 0 评论 -
7-8 修理牧场(25 分)(哈夫曼树)
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,...原创 2018-03-20 15:37:13 · 4609 阅读 · 1 评论 -
7-1 整数分解为若干项之和(20 分)(dfs)
思路:不带标记的dfs,只要没有超过和就不断dfs直到超过了之后向前回溯。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int a[40],k,n;int num;int sum;void dfs(int x){ int i;...原创 2018-03-20 15:02:35 · 2145 阅读 · 0 评论 -
L2-011. 玩转二叉树(先序中序求后序)
L2-011. 玩转二叉树给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转后的...原创 2018-03-14 11:22:11 · 348 阅读 · 0 评论 -
7-10 任务调度的合理性(25 分)(拓扑序列判断是否存在环)
7-10 任务调度的合理性(25 分)假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程...原创 2018-03-14 10:44:07 · 532 阅读 · 0 评论 -
7-11 列车厢调度(25 分)(栈)
1 ====== <--移动方向 /3 ===== \ 2 ====== –>移动方向大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过也不要紧)。今天,我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图,问题描述如下:有三条平行的列车轨道(1、2、3)以及1-3和2...原创 2018-03-14 09:25:09 · 2824 阅读 · 0 评论 -
7-1 垃圾箱分布(30 分)(最短路)
大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住。所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方,同时还要保证每个居民点都在距离它一个不太远的范围内。现给定一个居民区的地图,以及若干垃圾箱的候选地点,请你推荐最合适的地点。如果解不唯一,则输出到所有居民点的平均距离最短的那个解。如果这样的解还是不唯一,则输出编号最小的地点。 输入格式:输入第一行给出4个正...转载 2018-03-23 09:25:35 · 1793 阅读 · 1 评论 -
L2-006. 树的遍历
L2-006. 树的遍历给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。 输入样例:7 ...原创 2018-03-12 16:46:56 · 248 阅读 · 0 评论 -
7-2 输出全排列(20 分)(dfs)
7-2 输出全排列(20 分)请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。 输入格式:输入给出正整数n(<10)。 输出格式:输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列a1,a2,⋯,an排在序列b1,b2,⋯,bn之前,如果存...原创 2018-03-15 20:26:52 · 2754 阅读 · 0 评论 -
7-10 六度空间(30 分)(bfs)
思路:找出每个点到其他点距离小于等于六的路径有多少条,求其占全部路径的百分比。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>#include<queue>using namespace std;int map[10...原创 2018-03-20 21:23:18 · 1119 阅读 · 1 评论