
PTA天梯赛(c语言实现)
使用c语言对部分有趣的PTA天梯赛进行解答,欢迎大家交流
Z. Jia
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PTA天梯赛L2-032 彩虹瓶(c语言实现)
原题链接这道题说实话就是题目有点绕,但其实的意思就是堆栈的一个变式应用。最核心的代码我写了注释,感兴趣的朋友可以交流一下。#include <stdio.h>typedef struct{ int stack[1001]; int top;}stack;void init(stack *s){ s->top=0;} void push(stack *s,in...原创 2020-04-11 23:32:28 · 3002 阅读 · 3 评论 -
PTA天梯赛L2-011 玩转二叉树(c语言实现)
原题链接具体思想参照下方链接已知树的中序遍历与前(后)序遍历求二叉树问题下面附上源码#include <stdio.h>#include <stdlib.h>typedef struct node* bintree;typedef struct node{ bintree left; bintree right; int data;}tree;bin...原创 2020-04-11 13:11:43 · 1941 阅读 · 0 评论 -
PTA天梯赛L2-006 树的遍历(c语言实现)
原题链接具体思想参照下方链接已知树的中序遍历与前(后)序遍历求二叉树问题附上源码:#include <stdio.h>#include <stdlib.h>typedef struct node* bintree;typedef struct node{ bintree left; bintree right; int data;}tree;bint...原创 2020-04-11 13:07:28 · 611 阅读 · 1 评论 -
已知树的中序遍历与前(后)序遍历求二叉树问题
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。目前我们给出了三道pta中的习题,通过这三道题我们回顾...原创 2020-04-11 12:56:51 · 1792 阅读 · 0 评论 -
PTA天梯赛L2-017 人以群分(c语言实现)
原题链接这道题有点扯,一开始读题我都没看懂是什么意思,实际上就是排序,求前后两部分和的差。总人数若为奇数则外向的人多一个,若为偶数则内向外箱的人一样多。然后我用了c语言里面我目前认为最好用的库函数之一,qsort函数,感兴趣的朋友可以去百度。代码如下:#include <stdio.h>#include <stdlib.h>int cmp(const void ...原创 2020-04-08 15:27:45 · 1197 阅读 · 0 评论 -
PTA天梯赛L2-025 分而治之(c语言实现)
原题链接思路如下:用邻接表存储邻接矩阵,否则遇到稀疏图的时候会出现超时的现象。每个情况下,摧毁一个城市a等价于置a城市相连的城市数为0,与a相连的城市相连城市数减1。如果在摧毁所有目标后依然有城市的相连城市数大于0,那么战略失败,否则战略成功。#include <stdio.h>#include <stdlib.h>int vn1[10010]={0},v...原创 2020-04-08 11:03:31 · 1239 阅读 · 0 评论 -
PTA天梯赛L2-008 最长对称子串(c语言实现)
原题链接这道题用的算法时间复杂度是O(n^2) 学有余力的同学可以去看看“马拉车算法”,那个算法解这道题时间复杂度是O(n),但是这个算法这道题也可以过。大概思想如下:首先最外面套一层循环,从第一个字符遍历到最后一个字符。如果对称子串是奇数串,那么最中间的字符我们就不管了。对称子串当前最大长度为1,这时i-j表示指向第i个字符变量左边第j个字符,i+j表示指向第i个字符变量右边第j个字符...原创 2020-04-07 21:06:37 · 1138 阅读 · 0 评论 -
PTA天梯赛L2-002 链表去重(c语言实现)
原题链接这道题有点折磨人,如果没有接触过链表的初学者确实不太好理解其中的细节,建议做着这道题之前去了解一定的链表知识,如单结点的插入等。具体思想是用数组模拟链表,通过一个地址可以直接访问数组。本来一开始我是想一遍过去直接输出原链表删除完的样子,后来发现这样子还是不太方便理解,改成了重新建立两个数组,依次输出。本题中很多地方都是重复性的,本来写个函数调用就可以了,但是边思考边写代码还是直接复...原创 2020-04-05 22:20:55 · 2071 阅读 · 1 评论 -
PTA天梯赛L1-009 N个数求和(c语言实现)
原题链接这道题说实话还是比较复杂的,对于有些简单的20分题目明显难了些。最后一个测试点的分子是0,不注意处理的话会出现浮点错误,在细节上的实现也很重要,最后就是要记住辗转相除求最大公因数。代码如下:#include <stdio.h>typedef struct{ int fz; int fm;}number;int gcb(int x,int y){ int c,...原创 2020-04-05 00:24:59 · 2538 阅读 · 0 评论 -
PTA天梯赛L1-039 古风排版(c语言实现)
原题链接这道题还是有点意思的,需要注意的点就是不足的地方要输出空格补全,具体代码如下:#include <stdio.h>#include <string.h>int main(){ int n,len,l,f,i,j; scanf("%d",&n); char c[2000]; getchar(); gets(c); len=strlen(c)...原创 2020-04-04 22:48:17 · 813 阅读 · 0 评论 -
PTA天梯赛L1-054 福到了(c语言实现)
原题链接这道题真的是…绝了,输入很恶心,输出也很恶心。注意的点就是如果是输出,行和列都要倒过来。代码如下:#include <stdio.h>#include <string.h>char c[1000][1000];int main(){ int n,i,t=1,j; char a; scanf("%c %d",&a,&n); getc...原创 2020-04-04 22:24:43 · 1502 阅读 · 0 评论 -
PTA天梯赛L1-050 倒数第N个字符串(c语言实现)
原题链接这道题考的是个进制转换的问题,a-z是26进制,我一开始做的时候想成27进制了,不知道有没有人跟我想的一样呢(逃)。搞清楚进制之后就很容易做了,但是还不要忘记一点就是n-1,因为倒数第一个数是一堆z。代码如下:#include <stdio.h>int main(){ int l,n,i; scanf("%d %d",&l,&n); n=n-1;...原创 2020-04-04 21:04:53 · 1399 阅读 · 5 评论 -
PTA天梯赛L1-046 整除光棍(c语言实现)
原题链接这道题不能用暴力算法啦,要用模拟除法。以原题为例,你在纸上写上一长串的1,比如11111111111111111。这总共是17个1,下面列竖式去除31。你会发现当除到第15个1的时候31整除了这个数,所以我们的答案就是15个1。这样子可以极大的减少时间复杂度。代码如下:#include <stdio.h>int main(){ long long t=1,n; i...原创 2020-04-04 20:36:26 · 901 阅读 · 0 评论 -
PTA天梯赛L1-034 点赞(c语言实现)
原题链接这道题不难,我发现用一个大数组保存信息这一招相当有用,易于理解且便于实现,代码如下:#include <stdio.h>int main(){ int n,i,j,k,t,num; int a[1001]={0}; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&k); for(j=0;j&...原创 2020-04-04 10:53:24 · 1187 阅读 · 2 评论 -
PTA天梯赛L1-032 Left-pad(c语言实现)
原题链接这个题还是老生常谈的输入输出问题,需要注意的点如下:scanf输入遇到空格停止但不会吸收空格,在空格之后如果我们需要输入一个字符的时候应该先getchar();gets();之前有回车键,依然需要一个getchar()去吸收;代码如下#include <stdio.h>#include <string.h>int main(){ int n,i;...原创 2020-04-03 22:25:26 · 632 阅读 · 0 评论 -
PTA天梯赛L1-020 帅到没朋友(c语言实现)
原题链接这道题读的我有点云里雾里的,最关键的一点是如果朋友圈只有一个人那么他就不是因为帅而没有朋友(这个理解大概是对的吧,这道题真的有点迷)下面附上代码#include <stdio.h>int main(){ int num[100000]={0}; int n,i,m,p,k,t=1,j,f=1; scanf("%d",&n); for(i=0;i<n...原创 2020-04-03 21:03:06 · 1063 阅读 · 1 评论 -
PTA天梯赛L1-011 A-B(c语言实现)
原题链接这道题就要用巧的办法去做,极少的代码实现这道题!代码如下,不难懂#include <stdio.h>#include <string.h>int main(){ char a[10001],b[10001]; int c[130]={0},i,j; gets(a); gets(b); for(i=0;i<strlen(b);i++){ ...原创 2020-04-03 20:08:52 · 3526 阅读 · 8 评论 -
PTA天梯赛L1-040 最佳情侣身高差(c语言实现)
原题链接这道题…用c语言写太坑了输入是一个很需要注意的点下面附上代码,一定要多注意细节#include <stdio.h>int main(){ int n,i; double sg,dy; char sex[2]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%s %lf",sex,&sg); i...原创 2020-04-03 14:27:41 · 3565 阅读 · 2 评论 -
PTA天梯赛L1-025 正整数A+B(c语言实现)
原题链接这是一道很坑的题目,下面列出需要注意的点,具体代码的实现并不难,但是细节真的很重要。a如果是空串用c语言如何处理?b如果是数字+空格+乱码构成的字符串那么还能用scanf输入吗?你是否注意到a和b都是1到1000之间的整数?具体的请看代码,相信聪明的你经过提示之后不难看懂代码。#include <stdio.h>#include <string.h>...原创 2020-04-02 22:29:13 · 2377 阅读 · 3 评论 -
PTA天梯赛L1-016 查验身份证(c语言实现)
原题链接这道题没啥好说的,注意处理细节即可,代码如下:#include <stdio.h>int main(){ int jq[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; char jy[11]={'1','0','X','9','8','7','6','5','4','3','2'}; int n,i,j,sum=0,num=0,...原创 2020-04-02 17:12:18 · 635 阅读 · 0 评论 -
PTA天梯赛L1-015 跟奥巴马一起画方块(c语言实现)
原题链接这个题目最关键的问题是如何处理四舍五入。我们知道整型除一个整型是向零取整的,于是我们可以得出一个整型变量t。此时我们需要引入一个浮点型变量m去算出n/2之后的确切值是多少。接下来我们比较m-0.4和t的大小,如果m-0.4>t那么t要入,反之t要舍。下面是代码:#include <stdio.h>int main(){ int n,i,j,t,p; cha...原创 2020-04-02 16:00:40 · 1145 阅读 · 0 评论 -
PTA天梯赛L1-018 大笨钟(c语言实现)
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当...原创 2020-04-02 15:42:15 · 2745 阅读 · 0 评论 -
PTA天梯赛L1-002 打印沙漏(c语言实现)
原题如上,下面贴出代码#include <stdio.h>int main(){ int n,m=1,pre,i=1,j,k; char c; scanf("%d %c",&n,&c); while(n>=m){//这里用pre标出应该打印多少个字符 //注意这里的循环条件是n>=m,否则会找不到准确的pre pre=m; j=i;...原创 2020-04-02 15:04:40 · 836 阅读 · 0 评论 -
PTA天梯赛L1-058 6翻了(c语言实现)
原题链接这道题稍微有一点点灵活,乍一想还是有点想不到的。主要还是对6的个数进行计数,如果是6则计数有多少个6,如果不是6的话则要进行判断。如果在此之前6的个数超过了3(>3)但是小于等于9那么要输出9如果在此之前6的个数超过了9(>9)那么要输出27如果在此之前6的个数小于等于3,那么就输出6的个数个6最后一步是输出这个不是6的字符如果6出现在字符串末尾,注意要对上述情...原创 2020-04-03 10:35:02 · 8972 阅读 · 20 评论