PTA教学课程解题思路
PTA平台上的习题思路
苏横3215
这个作者很懒,什么都没留下…
展开
-
PTA 5-1 稀疏矩阵的处理
5-1 稀疏矩阵的处理 (25 分)特殊矩阵在采用二维数组存储时,尽管矩阵操作的算法都很简单,但是其空间的利用率很低。 稀疏矩阵就是一种应用很广泛的特殊的矩阵。通常稀疏矩阵在处理时都采用“压缩”存储,即把稀疏矩阵的非零元素抽象成为一个以三元组(行,列,值)为数据元素的线性表来处理,此线性表可以采用顺序存储,也可以采用链式存储。现要求编程实现稀疏矩阵在“压缩”存储时的常用操作,如输出、转置、求和、乘等。现要求编程实现稀疏矩阵在“压缩”存储时的矩阵的常用操作,如输出、转置、求和、乘等。 即输入两个矩阵,完成原创 2021-12-15 17:42:32 · 2743 阅读 · 0 评论 -
PTA 4-5 串的模式匹配 (20 分)
4-5 串的模式匹配 (20 分)给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:数据0:小规模字符串,测试基本正确性;数据1:随机数据,String 长度为 10的5次,Pattern 长度为 10;数据2:随机数据,String 长度为 10的5次,Pat原创 2021-12-07 17:30:44 · 1059 阅读 · 0 评论 -
PTA 4-4 出栈序列的合法性 (20 分)
4-4 出栈序列的合法性 (20 分)给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, …, N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5、N=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。输入格式:输入第一行给出 3 个不超过 1000 的正整数:M(堆栈最大容量)、N(入栈元素个数)、K(待检查的出栈序列个数)。最后 K 行,每行给出 N 个数字的出栈序列。所有原创 2021-12-06 22:45:12 · 311 阅读 · 0 评论 -
PTA 4-3(*) 堆栈操作合法性 (15 分)
4-3(*) 堆栈操作合法性 (15 分)假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。输入格式:输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超过100。输出格式:对每个序列,在一行中输出YES如果该序列是原创 2021-12-06 22:35:49 · 143 阅读 · 0 评论 -
PTA 4-2(*) 符号配对 (15 分)
4-2(*) 符号配对 (15 分)请编写程序检查C语言源程序中下列符号是否配对:/与/、(与)、[与]、{与}。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。输入样例1:void test(){ int i, A[原创 2021-12-06 22:32:11 · 367 阅读 · 0 评论 -
PTA 4-1(*) 另类堆栈 (10 分)
4-1(*) 另类堆栈 (10 分)在栈的顺序存储实现中,另有一种方法是将Top定义为栈顶的上一个位置。请编写程序实现这种定义下堆栈的入栈、出栈操作。如何判断堆栈为空或者满?函数接口定义:bool Push( Stack S, ElementType X );ElementType Pop( Stack S );其中Stack结构定义如下:typedef int Position;typedef struct SNode *PtrToSNode;struct SNode { Ele原创 2021-12-05 23:07:14 · 302 阅读 · 0 评论 -
PTA银行排队问题之单队列多窗口加VIP服务
3-7 银行排队问题之单队列多窗口加VIP服务 (20 分)假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。有些银行会给VIP客户以各种优惠服务,例如专门开辟VIP窗口。为了最大限度地利用资源,VIP窗口的服务机制定义为:当队列中没有VIP客户时,该窗口为普通顾客服务;当该窗口空闲并且队列中有VIP客户在等待时,排在最前面的VIP客户享受该窗口的服务。同时,当轮到某V原创 2021-11-30 23:46:27 · 2282 阅读 · 0 评论 -
PTA 银行排队问题之单队列多窗口服务 (15 分)
3-6 银行排队问题之单队列多窗口服务 (15 分)假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间,并且统计每个窗口服务了多少名顾客。输入格式:输入第1行给出正整数N(≤1000),为顾客总人数;随后N行,每行给出一位顾客的到达时间T和事务处理时间P,并且假设输入数据已经按到达时间先后排原创 2021-11-30 23:36:03 · 645 阅读 · 2 评论 -
PTA Deque (15 分)
3-3 Deque (15 分)A “deque” is a data structure consisting of a list of items, on which the following operations are possible:Push(X,D): Insert item X on the front end of deque D.Pop(D): Remove the front item from deque D and return it.Inject(X,D): Inser原创 2021-11-23 00:32:38 · 603 阅读 · 0 评论 -
PTA Evaluate Postfix Expression (15 分)
3-4 Evaluate Postfix Expression (15 分)Write a program to evaluate a postfix expression. You only have to handle four kinds of operators: +, -, x, and /.Format of functions:ElementType EvalPostfix( char *expr );where expr points to a string that stores原创 2021-11-23 00:24:34 · 815 阅读 · 0 评论 -
PTA 在一个数组中实现两个堆栈 (10 分)
3-2(*) 在一个数组中实现两个堆栈 (10 分)本题要求在一个数组中实现两个堆栈。函数接口定义: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 Position;struct SNode {原创 2021-11-22 17:33:02 · 206 阅读 · 0 评论 -
PTA 另类循环队列 (10 分)
3-1(*) 另类循环队列 (10 分)如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。函数接口定义:bool AddQ( Queue Q, ElementType X );ElementType DeleteQ( Queue Q );其中Queue结构定义如下:typedef int Position;typedef struct QNode *PtrToQNode;struct QN原创 2021-11-22 16:52:01 · 437 阅读 · 0 评论 -
PTA 单链表分段逆转 (12 分)
单链表分段逆转 (12 分)给定一个带头结点的单链表和一个整数K,要求你将链表中的每K个结点做一次逆转。例如给定单链表 1→2→3→4→5→6 和 K=3,你需要将链表改造成 3→2→1→6→5→4;如果 K=4,则应该得到 4→3→2→1→5→6。函数接口定义:void K_Reverse( List L, int K );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储原创 2021-11-21 15:48:33 · 2120 阅读 · 0 评论 -
PTA 2-6 最长连续递增子序列 (15 分)
2-6 最长连续递增子序列 (15 分)给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。输入格式:输入第1行给出正整数n(≤10的5);第2行给出n个整数,其间以空格分隔。输出格式:在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。输入样例:151 9 2 5 7 3 4 6 8 0 11 15 17 17 10//结尾无空行输出样例原创 2021-11-20 00:24:20 · 474 阅读 · 0 评论 -
PTA 1-1.数列求和-加强版 (20 分)
1-1 数列求和-加强版 (20 分)给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。输入格式:输入数字A与非负整数N。输出格式:输出其N项数列之和S的值。输入样例:1 3结尾无空行输出样例:123结尾无空行分析:A + AA + AAA + AAAA + AAAAA + AAAAAA + ⋯可以换种方式看个 十 百 千 ⋯A +A A原创 2021-11-19 21:21:13 · 722 阅读 · 0 评论