PTA
今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上。
「已注销」
不忘初心,方得始终。
展开
-
7-38 数列求和-加强版 (20分)
开数组就行了,呜呜原创 2020-05-20 14:01:17 · 637 阅读 · 0 评论 -
1046 Shortest Distance (20分)
求环中两个结点之间的最短距离。原创 2020-05-02 16:36:22 · 271 阅读 · 0 评论 -
1019 数字黑洞 (20分)
数字黑洞原创 2020-04-20 07:32:15 · 285 阅读 · 0 评论 -
1013 数素数 (20 分)
令 P(i) 表示第 i 个素数。现任给两个正整数 M≤N≤10^4,请输出 P(M) 到 P(N) 的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 P(M) 到 P(N) 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 1...原创 2019-10-19 16:29:25 · 161 阅读 · 0 评论 -
1008 数组元素循环右移问题 (20 分)
题目链接解题思路:先将整个数组就地逆置,再将前M个元素就地逆置,最后将后N-M个元素就地逆置。注意,题目中给出的M有可能大于N,因此,需要对这种情况做特殊处理。当M>N时,可以令M=M%N,然后再进行上述操作即可。AC代码:#include <bits/stdc++.h>using namespace std;void ReverseArray(in...原创 2019-10-17 07:49:56 · 139 阅读 · 1 评论 -
作业24 基数排序与串的模式匹配
作业24 基数排序与串的模式匹配解析:KMP算法在模式匹配时指示主串的指针不会变小回溯。解析:具体的实现过程如下图所示:解析:解析:解析:基数排序的时间复杂度为O(N)。解析:KMP算法的时间复杂度是O(n+m)。解析:牛客网解析解析:牛客网解析...原创 2019-12-07 18:55:40 · 330 阅读 · 0 评论 -
作业23-选择类排序与归并类排序
作业23-选择类排序与归并类排序解析:对N个记录进行简单的选择排序,比较的次数为O(N2N^2N2),移动的次数为O(NNN)。解析:堆排序需要的额外的空间为O(1)。解析:归并的趟数的数量级为O(logN)。解析:对N个记录进行简单的选择排序,比较的次数为O(N2N^2N2),移动的次数为O(NNN)。解析:最坏情况下需要交换9次。解析:初始状态如下:在初始状态的基础...原创 2019-12-07 18:32:29 · 352 阅读 · 0 评论 -
作业22-插入类与交换类排序
作业22-插入类与交换类排序解析:当元素已经按从大到小的顺序排好时,则进行1次冒泡(无交换)就可以终止算法。解析:快速排序在最坏情况下的时间复杂度为O(n2n^2n2)。解析:210=10242^{10}=1024210=1024,因此最大的比较次数为10。解析:{49,76}已经排好{38,13}->{13,38}{65,27}->{27,65}{97,50}...原创 2019-12-07 18:14:33 · 244 阅读 · 0 评论 -
作业21--哈希查找与直接插入排序
作业21–哈希查找与直接插入排序解析:根据散列函数和线性探测法,可以得到各个元素的在散列表中的地址如下:26 -> 925 -> 872 -> 438 -> 58 -> 1018 -> 159 -> 11故此题选择D项。解析:利用哈希表进行查找,平均查找长度与结点个数无关。解析:装填因子等于结点数与表长之比。解析:产生的一...原创 2019-12-07 17:11:33 · 207 阅读 · 0 评论 -
作业20-二叉排序树与平衡树
二叉排序树与平衡树原创 2020-04-28 09:03:45 · 550 阅读 · 0 评论 -
作业19-静态查找表
作业19-静态查找表2-1解析:50 25 12 6 3 1因此,最坏的情况需要比较7次。2-2解析:8 4 2 1所以,比较的次数最多为5次。2-3解析:该算法先将k加3,再依次判断A[k]、A[k-1]和A[k-2]是否为查找的关键字,直到k>=n或者A[k]>=x,因此,当要查找的x接近数组开头时,最容易找到,即比较的次数较少。故此题选择B项。2-4解...原创 2019-12-07 14:07:09 · 229 阅读 · 0 评论 -
作业18--最短路径
作业18–最短路径解析:因为b到a的最短距离为12,所以说c到a的最小距离应该为12-2=10,故c到a的最短路径距离不小于10。解析:Dijkstra算法可以用来解决最短路径的问题。解析:Dijkstra算法可以用来解决最短路径问题。解析:count[]数组是用来记录S到V的最短路径条数的,因此,对于count[S]应该初始化为1,对于其它顶点V,count[V]应该初始化为0...原创 2019-12-07 13:26:35 · 477 阅读 · 0 评论 -
作业17-拓扑排序与关键路径
作业17-拓扑排序与关键路径解析:在AOE网中,关键路径是指从第一个事件到最后一个事件的最长路径。解析:在拓扑排序算法中,使用堆栈和使用队列产生的结果可能不同,也可能相同,故此题选择C项。解析:在拓扑排序过程中,各个顶点的入度变化情况如下表所示:ABCDEFG101213222-0002223--001...原创 2019-12-07 10:51:45 · 1278 阅读 · 0 评论 -
作业16-图的遍历与最小生成树
作业16-图的遍历与最小生成树解析:以上几个题都是同一类型的题,给出有权无向图,让求最小生成树的总权重。下面以2-1为例,来说明一下这一类题的解法。有权无向图的邻接矩阵如下:[v0v1v2v3v4v5v0−1311519v13−1313−18v213−1112v315131−118−1v41−1118−12v5982−12−1]\begin{bmatrix}&v_0&am...原创 2019-12-07 10:21:46 · 584 阅读 · 0 评论 -
作业15-图的概念和存储结构
图的概念和存储结构原创 2020-04-28 10:25:10 · 500 阅读 · 0 评论 -
作业14-Huffman树及其应用
作业14-Huffman树及其应用解析:原创 2019-11-28 17:54:07 · 356 阅读 · 0 评论 -
作业13 树和森林 (含线索二叉树)
作业13 树和森林 (含线索二叉树)解析:对于每一棵树来说,除去根结点,每一个结点上面都有一条边,因此边数e=n-1则∑1me=∑1m(n−1)=\sum_1^me=\sum_1^m(n-1)=∑1me=∑1m(n−1)=TotalEdgeNum=TotalNodeNum-TreeNum,所以TreeNum=TotalNodeNum-TotalEdgeNum=N-K,故此题选择F项。...原创 2019-11-27 09:44:25 · 325 阅读 · 0 评论 -
作业12-二叉树的遍历等操作
作业12-二叉树的遍历等操作解析:后序遍历序列为L、R、N中序遍历序列为L、N、R要想两个序列一样,那么必然不含有R,因此该二叉树中的任何结点一定都无右孩子。解析:后序遍历序列为L、R、N中序遍历序列为L、N、R要想两个序列一样,那么必然不含有R,因此该二叉树中的任何结点一定都无右孩子。解析:前序遍历序列为N、L、R中序遍历序列为L、N、R要想两个序列一样,那么必然不...原创 2019-11-27 08:20:28 · 344 阅读 · 0 评论 -
作业11 树和二叉树的定义与基本操作
作业11 树和二叉树的定义与基本操作解析:对于二叉树来说,度为零的结点数n0n_0n0=度为2的结点数n2n_2n2+1,因此总结点数n=n0n_0n0+n1n_1n1+n2n_2n2=n0n_0n0+2*n2n_2n2+1=16+2*n2n_2n2+1=2016上述方程,无解,所以说该题的说法错误。解析:结点最多的情况,就是满二叉树,此时结点数为2h−12^h-12h−...原创 2019-11-26 21:34:09 · 360 阅读 · 0 评论 -
作业10-数组与广义表及树的概念
作业10-数组与广义表及树的概念原创 2019-11-26 18:09:36 · 308 阅读 · 0 评论 -
作业9-队列及其应用
作业9-队列及其应用解析:原创 2019-11-28 16:55:58 · 374 阅读 · 0 评论 -
作业8-栈与递归
作业8-栈与递归解析:解析:解析:原创 2019-11-25 21:09:46 · 284 阅读 · 0 评论 -
作业7-栈及其应用
作业7-栈及其应用解析:先将1和2压入栈中,在将2出栈,在将3压入栈中,然后3出栈,最后1出栈,因此输出序列应该为231。解析:由于栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i,说明1,2,3,…,i-1已经入栈,如果j<i的话,则第二个输出的是i-1,第三个输出的是i-2,以此类推,第j个输出的是i-j+1,如果j>i,那么就不确定了。解析:按照题目中的入栈...原创 2019-11-21 18:39:23 · 354 阅读 · 0 评论 -
作业6-改进的链表及链表应用
作业6-改进的链表及链表应用解析:因为要在最后一个元素之后插入元素和删除第一个元素,所以应该用带有尾指针的单循环链表。解析:先将s的前驱指针指向p,再将s的后继指针指向p的下一个元素,再将p下一个元素的前驱指针指向s,最后将p的后继指针指向s,故此题选择D项。解析:因为要经常在最后一个结点之后插入结点和删除最后一个结点,所以采用带头结点的双循环链表更方便。解析:因为要经常在最后一个...原创 2019-11-21 17:25:27 · 248 阅读 · 0 评论 -
作业5-链表
作业5-链表解析:单链表不支持随机存取,因此访问结点的时间复杂度不是O(1),应该是O(N)。解析:链式存储中元素的地址不一定连续。解析:用一个指针p来遍历其中一个单链表,找到最后一个元素,再将另一个单链表的第一个元素的地址赋值给p->next即可,因此时间复杂度应该为O(max(m,n))。解析:单链表不是一种随机存储的存储结构。解析:先将h所指向的地址赋值给t->...原创 2019-11-21 09:50:22 · 552 阅读 · 0 评论 -
作业4-顺序表复杂操作---实验
顺序表复杂操作原创 2020-04-28 10:32:29 · 390 阅读 · 0 评论 -
作业3 线性表类型定义与顺序表复杂操作
作业3 线性表类型定义与顺序表复杂操作解析:线性表采用顺序存储,可以随机访问表中元素,因此访问结点的时间复杂度为O(1),增加结点需要将元素后移,因此时间复杂度为O(N),故此题正确。解析:删除第一个元素需要将后面n-1个元素向前移动,因此时间复杂度为O(N),在表尾插入最后一个元素不需要进行移动,直接插入即可,因此时间复杂度为O(1),故此题错误。解析:若利用顺序表进行存储,以上这些...原创 2019-11-21 09:00:50 · 720 阅读 · 0 评论 -
作业2 算法复杂度分析
作业2 算法复杂度分析解析:算法分析的两个主要方面是时间复杂度和空间复杂度的分析。解析:显然前一个函数增长的快一些解析:两个函数的增长速度不同,后一个更快一些。解析:应该是O(NlogN)解析:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)= O(f(...原创 2019-11-18 18:18:27 · 777 阅读 · 0 评论 -
作业1 数据结构基本概念与顺序表基本操作
作业1 数据结构基本概念与顺序表基本操作解析:线性表采用链式存储,表中地址不一定是连续的。解析:逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的。数据的逻辑结构分为线性结构和非线性结构,线性表是典型的线性结构;集合、树和图是典型的非线性结构。解析:数据项是数据不可分割的最小单位数据元素是数据的基本单位数据结构(Data Structu...原创 2019-11-17 15:52:47 · 391 阅读 · 0 评论 -
数据结构作业0-C语言复习与回顾
数据结构作业0-C语言复习与回顾解析:原创 2019-11-14 22:48:41 · 419 阅读 · 0 评论 -
7-3 畅通工程之最低成本建设问题 (30 分)
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了有可能建设成快速路的若干条道路的成本,求畅通工程需要的最低成本。输入格式:输入的第一行给出城镇数目N (1<N≤1000)和候选道路数目M≤3N;随后的M...原创 2019-10-27 19:05:44 · 2253 阅读 · 0 评论 -
7-3 哈夫曼编码 (30 分)
题目:给定一段文字,如果我们统计出字母出现的频率,是可以根据哈夫曼算法给出一套编码,使得用此编码压缩原文可以得到最短的编码总长。然而哈夫曼编码并不是唯一的。例如对字符串"aaaxuaxz",容易得到字母 'a'、'x'、'u'、'z' 的出现频率对应为 4、2、1、1。我们可以设计编码 {'a'=0, 'x'=10, 'u'=110, 'z'=111},也可以用另一套 {'a'=1, 'x'=...原创 2019-10-19 13:41:42 · 5550 阅读 · 1 评论 -
7-2 人以群分 (25 分)
社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。输入格式:输入第一行给出一个正整数N(2≤N≤105 )。随后一行给出N个正整数,分别是每个人的活跃度,其间以空格分隔。题目保证这些数字以及它们的和都不...原创 2019-11-15 13:59:46 · 1088 阅读 · 0 评论 -
7-2 家谱处理 (30 分)
人类学研究对于家族很感兴趣,于是研究人员搜集了一些家族的家谱进行研究。实验中,使用计算机处理家谱。为了实现这个目的,研究人员将家谱转换为文本文件。下面为家谱文本文件的实例:John Robert Frank Andrew Nancy David家谱文本文件中,每一行包含一个人的名字。第一行中的名字是这个家族最早的祖先。家谱仅包含最早祖先的后代,而他们的丈...原创 2019-10-18 13:25:37 · 2005 阅读 · 0 评论 -
7-2 最长连续递增子序列
7-2最长连续递增子序列给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。输入格式:输入第1行给出正整数n(≤105);第2行给出n个整数,其间以空格分隔。输出格式:在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。...原创 2019-09-07 16:43:58 · 905 阅读 · 0 评论 -
7-1 邻接表创建无向图 (20 分)
采用邻接表创建无向图G ,依次输出各顶点的度。输入格式:输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。 输入第二行为顶点的信息,每个顶点只能用一个字符表示。 依次输入j行,每行输入一条边依附的顶点。输出格式:依次输出各顶点的度,行末没有最后的空格。输入样例:5 7ABCDEABADBCBECDCEDE输出样...原创 2019-10-24 17:15:55 · 6942 阅读 · 0 评论 -
6-5 顺序表基本操作 (10 分)
该题来源与PTA(PTA是一个千名教师建设,拥有万道高质量题目,百万用户拼题的程序设计实验辅助教学平台)。题目的具体要求如下:本题要求实现顺序表元素的增、删、查找以及顺序表输出共4个基本操作函数。L是一个顺序表,函数Status ListInsert_Sq(SqList &L, int pos, ElemType e)是在顺序表的pos位置插入一个元素e(pos应该从1开始),函数...原创 2019-08-19 22:21:58 · 904 阅读 · 0 评论 -
6-4 链表拼接 (20 分)
本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下:struct ListNode { int data; struct ListNode *next;};函数接口定义:struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);其中list1和list2...原创 2019-08-19 14:35:34 · 3654 阅读 · 0 评论 -
6-3 统计专业人数 (15 分)
本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。链表结点定义如下:struct ListNode { char code[8]; struct ListNode *next;};这里学生的学号共7位数字,其中第2、3位是专业编号。计算机专业的编号为02。函数接口定义:int countcs( struct ListNode *head );...原创 2019-08-19 10:50:21 · 2656 阅读 · 0 评论 -
6-2 建立学生信息链表 (20 分)
本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。函数接口定义:void input();该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:struct stud_node { int num; /*学号*/ char name[20]; /*姓名*/ ...原创 2019-08-19 10:06:07 · 3533 阅读 · 0 评论