
数据结构
W_Reborn
这个作者很懒,什么都没留下…
展开
-
中序后序转先序
#include<iostream>#include<algorithm>#include<vector>using namespace std;typedef int ElementType;int post[30], in[30];void Traversal(int postL, int postR, int inL, int inR, int N);int main(){ int N, i; cin >> N; for (i =原创 2021-06-09 23:11:04 · 304 阅读 · 0 评论 -
07-图6 旅游规划
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中原创 2021-05-24 22:30:54 · 190 阅读 · 0 评论 -
07-图4 哈利·波特的考试
输入格式:输入说明:输入第1行给出两个正整数N (≤100)和M,其中N是考试涉及的动物总数,M是用于直接变形的魔咒条数。为简单起见,我们将动物按1~N编号。随后M行,每行给出了3个正整数,分别是两种动物的编号、以及它们之间变形需要的魔咒的长度(≤100),数字之间用空格分隔。输出格式:输出哈利·波特应该带去考场的动物的编号、以及最长的变形魔咒的长度,中间以空格分隔。如果只带1只动物是不可能完成所有变形要求的,则输出0。如果有若干只动物都可以备选,则输出编号最小的那只。#include<ios原创 2021-05-20 23:24:11 · 443 阅读 · 0 评论 -
06-图3 六度空间
输入格式:输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤103,表示人数)、边数M(≤33×N,表示社交关系数)。随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个结点的编号(节点从1到N编号)。输出格式:对每个结点输出与该结点距离不超过6的结点数占结点总数的百分比,精确到小数点后2位。每个结节点输出一行,格式为“结点编号:(空格)百分比%”。#include<iostream>#include<queue>#include &原创 2021-05-17 17:57:55 · 467 阅读 · 0 评论 -
06-图2 Saving James Bond - Easy Version
This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with crocodiles. There he原创 2021-05-16 17:46:15 · 128 阅读 · 0 评论 -
06-图1 列出连通集 (邻接表方法)
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{ v1 v2 … vk}"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。#include <iostream>原创 2021-05-15 11:52:14 · 270 阅读 · 0 评论 -
03-树3 Tree Traversals Again
An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); push(2); push(3); pop(); pop(原创 2021-05-12 22:17:00 · 129 阅读 · 0 评论 -
05-树8 File Transfer
We have a network of computers and a list of bi-directional connections. Each of these connections allows a file transfer from one computer to another. Is it possible to send a file from any computer on the network to any other?Input Specification:Each i原创 2021-05-12 18:24:16 · 141 阅读 · 0 评论 -
02-线性结构4 Pop Sequence
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, …, N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if M is 5 and N is 7, we can obtain原创 2021-05-05 23:59:37 · 163 阅读 · 0 评论 -
02-线性结构3 Reversing Linked List
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→4; if K=4, you must output 4→3→2→1→5→6.Input Specification:Each原创 2021-05-04 20:56:04 · 88 阅读 · 0 评论 -
04-树5 Root of AVL Tree
Now given a sequence of insertions, you are supposed to tell the root of the resulting AVL tree.Input Specification:Each input file contains one test case. For each case, the first line contains a positive integer N (≤20) which is the total number of key原创 2021-04-17 12:18:57 · 101 阅读 · 0 评论 -
05-树7 堆中的路径
将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。#include<iostream>using原创 2021-04-17 00:04:26 · 118 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树
#include<iostream>using namespace std;typedef struct TreeNode* Tree;struct TreeNode { int v; Tree left, right; int flag;};Tree NewNode(int V);Tree Insert(Tree T, int V);int check(Tree T, int V);int Judge(Tree T, int N);void Reset(Tree T原创 2021-04-14 22:09:58 · 118 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要检查原创 2021-04-14 22:05:53 · 148 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要检查原创 2021-04-14 21:56:51 · 108 阅读 · 0 评论 -
03-树2 List Leaves
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives a positive integer N (≤10) which is the total number of node原创 2021-04-11 23:25:21 · 140 阅读 · 0 评论 -
03-树1 树的同构
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。如果孩子结点为空,则在相应位置上给出原创 2021-04-11 17:54:06 · 242 阅读 · 0 评论 -
02-线性结构2 一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。#include<iostream>using namespace std;typedef struct PolyNode* Polynom原创 2021-04-09 22:24:56 · 238 阅读 · 0 评论 -
02-线性结构1 两个有序链表序列的合并
L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的带头结点的链表头指针。List Merge(List L1, List L2){ List tmp1, tmp2, L, head; head = (List)malloc(sizeof(struct Node)); L = head; //储存头节点以供返回. tmp1 = L1->Next;原创 2021-04-07 23:53:43 · 136 阅读 · 0 评论 -
秦九韶算法比较时间复杂度
给定另一个100阶多项式 #include<iostream>#include<time.h>#include<math.h>using namespace std;clock_t start, stop;double duration;#define MAXN 100#define MAXK 1e5double f1(int n, double x);double f2(int n, double x);int main(){ int原创 2021-03-07 17:16:35 · 744 阅读 · 0 评论