
pta
WKP9418
愿有一天开怀大笑
展开
-
pta 7-3 两个有序链表序列的合并 (20 分)
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10 -1输出样例...原创 2019-04-16 21:16:49 · 4310 阅读 · 0 评论 -
二分查找
本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last;...原创 2019-06-21 23:23:53 · 135 阅读 · 0 评论 -
数组元素的区间删除
给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:int Delete( int A[], int L, int minA, int maxA );其中A是整型数组,存储原始线性表的元素;L是表长,即A中元素的个数;minA和maxA分别为待删除元素的值域的下、上界。函数Delete应将A...原创 2019-06-22 12:01:45 · 633 阅读 · 0 评论 -
航空公司VIP客户查询
不少航空公司都会提供优惠的会员服务,当某顾客飞行里程累积达到一定数量后,可以使用里程积分直接兑换奖励机票或奖励升舱等服务。现给定某航空公司全体会员的飞行记录,要求实现根据身份证号码快速查询会员里程积分的功能。输入格式:输入首先给出两个正整数N(≤10的5次方 )和K(≤500)。其中K是最低里程,即为照顾乘坐短程航班的会员,航空公司还会将航程低于K公里的航班也按K公里累积。随后N行,每行给出...原创 2019-06-25 23:16:58 · 645 阅读 · 0 评论 -
双端队列
双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可(也只能)在线性表的两端进行插入和删除。、看到就直接蒙了,啥玩意???先看一下啥是队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作...原创 2019-06-22 21:35:54 · 21520 阅读 · 5 评论 -
线性探测法的查找函数
线性探测法:如遇到了冲突,用pos+i(i=1,2,3…)的方式来找到新的未用过的位置。查找时,如果没有,我们的结束条件就时i>=表的长度。这样缺点也很突出,就是很多元素会扎堆的出现,降低了效率,我们称为“一次聚集”。为了减轻,我们用了平方查找法。平方查找法:如遇到了冲突,用pos+i*i和pos-i*i(i=1,2,3…)的方式来找到新的未用过的位置。查找时,如果没有,我们...原创 2019-06-22 23:19:11 · 5031 阅读 · 1 评论 -
图着色问题
图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。输入格式:输入在第一行给出3个整数V(0<V≤500)、E(≥0)和K(0<K≤V),分别是无向图的顶点数、边数、以及颜色数。顶点和颜色都...原创 2019-06-23 14:04:23 · 1920 阅读 · 1 评论 -
列出叶结点
对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。输入格式:首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 “-”。编号间以 1 个空格分隔。输出格式:在一行中按规定顺序输出叶节点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。...原创 2019-06-24 15:29:16 · 2103 阅读 · 0 评论 -
求自定类型元素序列的中位数
第k大的模板使用快排思想来写的。此题先排序好,直接输出即可。注意最后一个测试点卡时,用插入超时原创 2019-07-09 21:17:45 · 203 阅读 · 0 评论 -
邻接表存储图的广度优先遍历
试实现邻接表存储图的广度优先遍历。函数接口定义:void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */typedef struct AdjVNode *PtrToAdjVNode; struct AdjVNode{ Vertex AdjV; ...原创 2019-06-29 18:41:12 · 2047 阅读 · 0 评论 -
冒泡排序
编程实现冒泡排序函数。void bubbleSort(int arr[], int n);。其中arr存放待排序的数据,n为数组长度(1≤n≤1000)。函数接口定义如下:/* 对长度为n的数组arr执行冒泡排序 */void bubbleSort(int arr[], int n);请实现bubbleSort函数,使排序后的数据从小到大排列。裁判测试程序样例:#include ...原创 2019-06-29 18:59:50 · 5584 阅读 · 1 评论 -
阶乘计算升级版
本题要求实现一个打印非负整数阶乘的函数。函数接口定义:void Print_Factorial ( const int N );其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。裁判测试程序样例:#include <stdio.h>void Print_Factorial ( con...原创 2019-07-10 13:54:29 · 235 阅读 · 0 评论 -
统计个位数字
本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。函数接口定义:int Count_Digit ( const int N, const int D );其中N和D都是用户传入的参数。N的值不超过int的范围;D是[0, 9]区间内的个位数。函数须返回N中D出现的次数。裁判测试程序样例:#include <stdio....原创 2019-07-10 14:02:58 · 282 阅读 · 0 评论 -
有序数组的插入
简单问题大思想。三种方法教你做原创 2019-06-29 21:32:44 · 2950 阅读 · 2 评论 -
统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。函数接口定义:int IsTheNumber ( const int N );其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。裁判测试程序样例:#include <stdio.h>#include <math.h>int ...原创 2019-07-10 17:43:40 · 302 阅读 · 0 评论 -
多项式求值
本题要求实现一个函数,计算阶数为n,系数为a[0]...a[n]的多项式f(x)= 在x点的值。函数接口定义:double f( int n, double a[], double x );其中n是多项式的阶数,a[]中存储系数,x是给定点。函数须返回多项式f(x)的值。裁判测试程序样例:#include <stdio.h>#define MAXN 1...原创 2019-07-10 18:06:26 · 2082 阅读 · 1 评论 -
打印选课学生名单
假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。输入格式:输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。输出格式:顺序输出课程1到...原创 2019-06-20 23:17:05 · 753 阅读 · 0 评论 -
抢红包
没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。输入格式:输入第一行给出一个正整数N(≤104 ),即参与发红包和抢红包的总人数,则这些人从1到N编号。随后N行,第i行给出编号为i的人发红包的记录,格式如下:K N (1) P (1) ⋯N (k) P (k)其中K(0≤K≤20)是发出去的红包...原创 2019-06-20 23:15:06 · 149 阅读 · 0 评论 -
求二叉树高度
本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position; typedef Position BinTree; structTNode{ElementType Data;BinTree Left;BinTree Right; };要求函数返回...原创 2019-06-20 23:10:55 · 1201 阅读 · 0 评论 -
pta 7-6 根据后序和中序遍历输出先序遍历 (25 分)
大家不会的可以看一下我的一篇文章我是链接-关于二叉树遍历的基础知识本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式:第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式:在一行中输出Preorder:以及该树的先序遍历结果。数字间有1个空...原创 2019-04-21 23:12:36 · 1101 阅读 · 0 评论 -
7-8 Windows消息队列 (25 分)
消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。输入格式:输入首先给出正整数N(≤10 ^5 ),随后N行,每行给出一个指令...原创 2019-05-02 22:11:50 · 1810 阅读 · 1 评论 -
给出中后或者前中遍历,确定一个二叉树
前序遍历:先访问根节点,在访问左节点,在右节点中序遍历:现访问左节点,在访问根节点,在右节点后序遍历:现访问左节点,在访问右节点,在根节点(顺序以根节点为基准)二叉树的遍历:分为前中和后中(一定要有中序遍历才能确定一个二叉树)例如:前中序遍历:前序:abdfecghi中序:dbefaghci思路:前序遍历中的第一个节点a一定是根节点,据此,我们在中序遍历里找到a,这个a把中序数组分为...原创 2019-04-20 14:55:29 · 352 阅读 · 0 评论 -
7-5 符号配对 (20 分)
请编写程序检查C语言源程序中下列符号是否配对:/与/、(与)、[与]、{与}。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-...原创 2019-04-30 17:02:56 · 8755 阅读 · 4 评论 -
pta 哈夫曼编码
给定一段文字,如果我们统计出字母出现的频率,是可以根据哈夫曼算法给出一套编码,使得用此编码压缩原文可以得到最短的编码总长。然而哈夫曼编码并不是唯一的。例如对字符串"aaaxuaxz",容易得到字母 ‘a’、‘x’、‘u’、‘z’ 的出现频率对应为 4、2、1、1。我们可以设计编码 {‘a’=0, ‘x’=10, ‘u’=110, ‘z’=111},也可以用另一套 {‘a’=1, ‘x’=01, ‘...原创 2019-05-24 20:42:33 · 7495 阅读 · 7 评论 -
pta 词频统计
请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。输入格式:输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。输出格式:在第一行中输出文本中所有不...原创 2019-05-21 14:40:59 · 4078 阅读 · 3 评论 -
pta 插入排序还是堆排序
根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。堆排序也是将输入分为有序和无序两部分,迭代地从无序部分找出最大元素放入有序部分。它利用了大根堆的堆顶元素最大这一特征,使得在当前无序区中选取最大元素变得简单。现给定原始序列和由某排序算法产生的中间序列,请你判断该算法...原创 2019-05-11 21:46:01 · 5744 阅读 · 3 评论 -
pta 生化危机
人类正在经历一场生化危机,许多城市已经被病毒侵袭,这些城市中的人们为了避免感染病毒,计划开车逃往其他没有被病毒入侵的城市(安全城市)。有些城市之间有公路直达,有些没有。虽然他们知道哪些城市是安全的,但是不知道有没有一条安全路径能够到达安全城市(只有该路径上经过的所有城市都是安全的,该路径才是安全路径)。请你编写一个程序帮助他们判断。输入格式:输入第一行为三个正整数,分别表示所有城市个数m(m&...原创 2019-05-21 16:29:18 · 2097 阅读 · 3 评论 -
pta 公路村村通
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保...原创 2019-05-30 22:50:46 · 1908 阅读 · 0 评论 -
pta 整型关键字的平方探测法散列
本题的任务很简单:将给定的无重复正整数序列插入一个散列表,输出每个输入的数字在表中的位置。所用的散列函数是 H(key)=key%TSize,其中 TSize 是散列表的表长。要求用平方探测法(只增不减,即H(Key)+i2 )解决冲突。注意散列表的表长最好是个素数。如果输入给定的表长不是素数,你必须将表长重新定义为大于给定表长的最小素数。输入格式:首先第一行给出两个正整数 MSi...原创 2019-05-28 15:46:35 · 5913 阅读 · 8 评论 -
pta 哈利·波特的考试
哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有...原创 2019-06-07 12:57:16 · 1180 阅读 · 0 评论 -
pta 最短工期
一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。输入格式:首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描述,格式为“任务起始里程碑 任务结...原创 2019-06-07 13:02:41 · 1276 阅读 · 0 评论 -
顺序表操作集
本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty();Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:List MakeEmpty();...原创 2019-06-20 22:59:40 · 1634 阅读 · 0 评论 -
链式表的按序号查找
本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K );其中List结构定义如下:typedef struct LNode *PtrToLNode; struct LNode {ElementType Data;PtrToLNode Next; };typedef PtrToLNode List...原创 2019-06-20 23:03:10 · 1668 阅读 · 0 评论 -
在一个数组中实现两个堆栈
本题要求在一个数组中实现两个堆栈。函数接口定义:Stack CreateStack( int MaxSize );bool Push( Stack S, ElementType X,int Tag );ElementType Pop( Stack S, int Tag );其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:typedef int...原创 2019-06-20 23:06:16 · 7932 阅读 · 0 评论 -
6-13 折半查找
折半查找时间复杂度O(logn).每次查询的数量为 n n/2 n/4 n/8 ...最后有n/2的k次方=1,解得k=logn。缺点是不能动态查找。需要动态查找的话,我们有二叉搜索树,查找复杂度在O(logn)--O(n)原创 2019-07-05 14:17:45 · 301 阅读 · 0 评论