数据结构
文章平均质量分 77
registor11
一个心不死的技术控
展开
-
POJ 2443 Set Operation [bitset]
题目You are given N sets, the i-th set (represent by S(i)) have C(i) element (Here “set” isn’t entirely the same as the “set” defined in mathematics, and a set may contain two same element). Every element in a set is represented by a positive number from 1原创 2022-01-22 01:00:49 · 648 阅读 · 0 评论 -
POJ 1192 最优连通子集
题目众所周知,我们可以通过直角坐标系把平面上的任何一个点P用一个有序数对(x, y)来唯一表示,如果x, y都是整数,我们就把点P称为整点,否则点P称为非整点。我们把平面上所有整点构成的集合记为W。定义1 两个整点P1(x1, y1), P2(x2, y2),若|x1-x2| + |y1-y2| = 1,则称P1, P2相邻,记作P1~P2,否则称P1, P2不相邻。定义 2 设点集S是W的一个有限子集,即S = {P1, P2,…, Pn}(n >= 1),其中Pi(1 <= i &l原创 2021-11-22 23:26:23 · 150 阅读 · 0 评论 -
PTA Replacement Selection
题目When the input is much too large to fit into memory, we have to do external sorting instead of internal sorting. One of the key steps in external sorting is to generate sets of sorted records (also called runs) with limited internal memory. The simples原创 2021-10-12 20:26:13 · 360 阅读 · 0 评论 -
PTA 完全二叉树的层序遍历
题目一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。输入输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔输出在一行中输出该树的层序遍历序列。所有数字都以 1 个空格分隔,行首尾不得原创 2021-09-30 15:26:38 · 1956 阅读 · 0 评论 -
PTA 深入虎穴
题目著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。内线告诉他,情报就藏在迷宫的最深处。但是这个迷宫太大了,他需要你的帮助 —— 请编程帮他找出距离入口最远的那扇门。输入输入原创 2021-09-27 21:16:32 · 540 阅读 · 0 评论 -
PTA 二叉搜索树的最近公共祖先
题目.给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。输入输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。最后 M 行,每行给出一对整数键值 U 和 V。所有键值都在整型int范围内。输出对每一对给定的 U 和 V,如果找到 A 是它们的最近公共祖先结点的键值,则在一行中输出 LCA of U and V is A.。但如原创 2021-09-11 23:58:26 · 4793 阅读 · 2 评论 -
PTA 特殊堆栈
题目堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 N/2 小元;若是奇数,则为第 (N+1)/2 小元。输入输入的第一行是正整数 N(≤105)。随后 N 行,每行给出一句指令,为以下 3 种之一:Push keyPopPeekMedian其中 key 是不超过 10510^原创 2021-09-11 19:20:31 · 974 阅读 · 0 评论 -
PTA 哈夫曼编码
题目给定一段文字,如果我们统计出字母出现的频率,是可以根据哈夫曼算法给出一套编码,使得用此编码压缩原文可以得到最短的编码总长。然而哈夫曼编码并不是唯一的。例如对字符串"aaaxuaxz",容易得到字母 ‘a’、‘x’、‘u’、‘z’ 的出现频率对应为 4、2、1、1。我们可以设计编码 {‘a’=0, ‘x’=10, ‘u’=110, ‘z’=111},也可以用另一套 {‘a’=1, ‘x’=01, ‘u’=001, ‘z’=000},还可以用 {‘a’=0, ‘x’=11, ‘u’=100, ‘z’=1原创 2021-08-30 17:09:28 · 3384 阅读 · 0 评论 -
PTA 这是二叉搜索树吗?
题目一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。输入输入的第一行给出正整数 N(≤1000)。随后一行给出 N 个整数键值,其间以空格分隔。输出如果输入序列是对一棵二叉搜索树或其原创 2021-08-14 08:07:45 · 1100 阅读 · 0 评论 -
PTA 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?题目大意给出一些电脑的网络连接关系,按照给原创 2021-08-14 07:31:23 · 332 阅读 · 0 评论 -
PTA 树的同构
题目给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结原创 2021-08-14 07:08:42 · 244 阅读 · 0 评论 -
PTA 还原文件
题目一份重要文件被撕成两半,其中一半还被送进了碎纸机。我们将碎纸机里找到的纸条进行编号,如图 1 所示。然后根据断口的折线形状跟没有切碎的半张纸进行匹配,最后还原成图 2 的样子。要求你输出还原后纸条的正确拼接顺序。图1纸条编号图2还原结果输入输入首先在第一行中给出一个正整数 N(1<N≤1051<N≤10^51<N≤105),为没有切碎的半张纸上断口折线角点的个数;随后一行给出从左到右 N 个折线角点的高度值(均为不超过 100 的非负整数)。随后一行给出一个正整数原创 2021-08-14 06:43:26 · 669 阅读 · 0 评论 -
PTA 简单计算器
题目本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1S_1S1 存放数字,另一个堆栈 S2S_2S2 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:从 S1S_1S1 中弹出两个数字,顺序为 n1n_1n1 和 n2n_2n2;从 S2S_2S2 中弹出一个运算符 op;执行计算 n2n_2n2 op n1n_1n1;将得到的结果压回 S1S_1S1。直到原创 2021-08-13 20:11:55 · 2808 阅读 · 0 评论 -
PTA Merging Linked Lists
题目Given two singly linked lists L1=a1→a2→⋯→an−1→anL_1=a_1→a_2→⋯→a_{n−1}→a_nL1=a1→a2→⋯→an−1→an and L2=b1→b2→⋯→bm−1→bmL_2=b_1→b_2→⋯→b_{m−1}→b_mL2=b1→b2→⋯→bm−1→bm. If n≥2m, you are supposed to reverse and merge the shorter原创 2021-08-13 19:54:30 · 365 阅读 · 0 评论 -
PTA 符号配对
题目请编写程序检查C语言源程序中下列符号是否配对:/* 与 */、( 与 )、[ 与 ]、{ 与 }。输入输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。输入样例1void test(){ int i, A[10];原创 2021-08-13 19:20:53 · 2997 阅读 · 3 评论 -
PTA 三足鼎力
题目当三个国家中的任何两国实力之和都大于第三国的时候,这三个国家互相结盟就呈“三足鼎立”之势,这种状态是最稳定的。现已知本国的实力值,又给出 n 个其他国家的实力值。我们需要从这 n 个国家中找 2 个结盟,以成三足鼎立。有多少种选择呢?输入输入首先在第一行给出 2 个正整数 n(2≤n≤105)n(2≤n≤10^5)n(2≤n≤105)和P(≤109)P(≤10^9)P(≤109),分别为其他国家的个数、以及本国的实力值。随后一行给出 n 个正整数,表示n 个其他国家的实力值。每个数值不超过原创 2021-08-13 18:03:01 · 1276 阅读 · 0 评论 -
PTA 01背包
题目事情是这样的,jzk要去爬山,但是他的包容量有限,可是他需要非常多的能量,要不然就很容易饿。 第一行给出jzk准备爬几次山。 每次爬山都会带新的包(因为jzk每用一个包都会被zwg抢过去),和准备新的食物(因为每次剩下来的都被zwg吃了)。 下一行给你这一次食物的数目n,和背包容量k, 接下来的一行给出n个食物的能量,再一行给出n个食物的大小(占背包的容量)。 请帮助jzk计算他最多可以带多少能量的食物去爬山。输出可以携带食物的最大能量和。 (n,m<1000) 能量和食物均小于40000原创 2021-08-05 21:43:08 · 790 阅读 · 0 评论 -
PTA Maximum Subsequence Sum
题目Given a sequence of K integers { N1,N2,...,NKN_1, N_2, ..., N_KN1,N2,...,NK }. A continuous subsequence is defined to be { Ni,Ni+1,...,NjN_i, N_{i+1}, ..., N_jNi,Ni+1,...,Nj } where 1≤i≤j≤K. The Maximum Subsequence is the continuo原创 2021-08-05 20:44:01 · 145 阅读 · 0 评论 -
PTA 最大子列和问题
题目给定K个整数组成的序列{ N1,N2,...,NKN_1, N_2, ..., N_KN1,N2,...,NK },“连续子列”被定义为{ Ni,Ni+1,...,NjN_i, N_{i+1}, ..., N_jNi,Ni+1,...,Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,原创 2021-08-05 20:14:04 · 401 阅读 · 0 评论