
pta
pta学习记录
tanxinji
站在巨人的肩膀上
展开
-
6-1 单链表逆转
本题要求实现一个函数,将给定的单链表逆转。函数接口定义:/* 定义单链表类型 */L是给定单链表,函数Reverse要返回被逆转后的链表。/* 你的代码将被嵌在这里 */输入样例:51 3 4 5 2输出样例:12 5 4 3 1。原创 2022-10-23 22:45:11 · 597 阅读 · 0 评论 -
pta 7-3 整数拆分 C++
题目:将一个正整数n拆分成若干个正整数的和(至少两个数,n<=100)。输入格式:一个正整数n输出格式:若干行,每行一个等式(数与数之间要求非降序排列)。最后一行给出解的总个数输入样例:在这里给出一组输入。例如:4输出样例:4=1+1+1+14=1+1+24=1+34=2+24最后一行的4表示总共有4个解。 题解:dfs每一种可行的情况即可,每次从上一次枚举的数开始遍历,减去可行值,当 v == 0 时就是一个解。用path数组存可行的数据。最后输出 .原创 2022-05-05 18:30:11 · 1866 阅读 · 0 评论 -
pta 7-7 哪两个点之间的距离最近
题目设P={(x 1,y 1 ),(x 2 ,y 2 ),⋯,(x n ,y n)}是平面上散列的n个点的集合。请编写程序找出集合中距离最近的点对。严格地说,相同距离的最近点对可能不止一对,为了简单期间只找出第一对最近点对即可。输入格式:输入第一行给出一个正整数n,表示平面上的点数。随后n行,每行给出一个实数对,每个实数对表示一个点的纵横坐标值,其中第1数表示横坐标,第2数表示纵坐标。输出格式:输出最近点对中两个点的坐标和它们之间的距离。如果 x1+y1<=x2+y2则按 (原创 2022-05-03 07:00:00 · 4830 阅读 · 5 评论 -
L1-025 正整数A+B (15 分) 巧用Java异常
题目链接: L1-025 正整数A+B (15 分) 题目描述:题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。输入格式:输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。输出格式:如果输入的确是两个正整数,则按格原创 2022-04-14 18:40:23 · 197 阅读 · 0 评论 -
C++使用数组求 L1-005 考试座位号 (15 分)
1.题目L1-005 考试座位号 (15 分)每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。输入格式:输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 1原创 2022-03-22 20:23:28 · 242 阅读 · 0 评论 -
顺序表的插入操作
1题目:本题要求实现一个函数,在顺序表的第i个位置插入一个新的数据元素e,插入成功后顺序表的长度加1,函数返回值为1;插入失败函数返回值为0;函数接口定义:int ListInsert(SqList &L,int i,ElemType e);其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqList;裁判测试程序样例:#include <stdio.h>...原创 2021-05-11 18:34:05 · 6807 阅读 · 4 评论 -
6-3 带头结点链栈的操作
目录1.题目:2.题解1.题目:本题要求实现带头链表的栈,写出Push 、Pop函数。函数接口定义:Status Push(LinkList L,ElemType e);Status Pop(LinkList L,ElemType *e);其中L和e都是用户传入的参数。L是带头结点的头指针;e是数据元素。 其中LinkList定义如下:typedef struct LNode{ ElemType data; s...原创 2021-05-09 19:32:12 · 3249 阅读 · 0 评论 -
数组循环左移
题目:本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1a0a1⋯am−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。输出原创 2021-04-07 16:45:32 · 620 阅读 · 0 评论 -
链表的操作集
本题要求实现链式表的操作集。函数接口定义:Position Find( List L, ElementType X );List Insert( List L, ElementType X, Position P );List Delete( List L, Position P );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Ne原创 2021-05-03 11:32:09 · 260 阅读 · 0 评论 -
两个有序链表序列的合并
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10 -1输出样例:1 2 3 4 5 6 8 10题解:很常规的一道题,但使用数组可能会出现最后.原创 2021-05-03 11:18:50 · 545 阅读 · 0 评论 -
7-2 堆栈操作合法性 (15 分)
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。输入格式:输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超过100。输出格式:对每个序列,在一行中输出YES如果该序列是合法的堆栈操作序列,或NO如果不是。原创 2021-05-07 13:34:56 · 1643 阅读 · 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 Position;struct SNode { ElementType *Data;原创 2021-05-02 20:06:36 · 690 阅读 · 0 评论 -
6-1 循环队列操作集
1.题目:本题要求实现循环队列操作集。函数接口定义:在这里描述函数接口。例如:#define MAXSIZE 10typedef struct _queue{ int front;//队头指针 int rear;//队尾指针 int *data;//指向数据区}queue;//创建一个空队列queue* createQueue();//入队void enQueue(queue* q, int x);//判断队列是否已满bool isFull(q原创 2021-05-07 22:32:16 · 4579 阅读 · 0 评论