自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 PAT真题(C/C++)——1051:Pop Sequence

我在解题的时候一个很大的毛病就是,总是希望能够用更加数学化的方法来解题,导致很多时候会把问题复杂化。这道题我最初想采用的方法是为每一个数标注,在访问过一个点以后标注当前哪些点可以访问,哪些不可以访问,这样做会导致后期判断极多,因为要考虑被访问过的量不能够纳入统计,导致很多的bug。参考了大神代码,就直接做了一个栈完了直接判断。只想说有的时候啊,该简单粗暴还是得简单粗暴。C++里面的sta...

2020-02-09 14:24:21 222

原创 PAT真题(C/C++)——1047:Shopping in Mars

这道题遇到的问题和上一道相同,都是超时。最初我是用set数组,根据课程,按序存放每个学生的名字,学生名字使用string存放,这样做就导致了超时,然后把set换成了vector,并编写了名字排序的比较函数,每一个课程都自行进行一次名字排序,依然超时,再然后把string换成了char数组,继续超时,最后的最后,把名字存放在一个数组里,用数组下标代替名字,最后成功AC。那么,为什么换成了数组下...

2020-02-07 11:44:31 268

原创 PAT真题(C/C++)——1046:Shortest Distance

这道题是一道不难的题,可是也困扰了我,如果只是暴力计算,每一个需要计算的两个点间依次加一遍,这样会导致超时的问题,不过有一说一,仅仅是超时导致的扣分是可以接受的,20分的题给了17分,如果是考试遇见,估计也就无所谓了……解决超时问题的方法是,每个点不存放单条路径长度,而是存放从起始点到某一点的总长,这样做就简化了问题复杂度,因为每一次都去累加的话,会产生大量的重复计算,造成超时。代码如下:...

2020-02-07 11:34:11 168

原创 PAT真题(C/C++)——1044:Shopping in Mars

这道题一共产生了三种解决方法,最终实现全部测试点通过的是最后一种,现在每一种都说说吧。暴力一点的方法这种暴力的方法是最容易想到的,也就是遍历每一个元素,然后每一个元素向后累加,直到加出一个大于等于目标值为止,再进行下一步是否是可用结果的判断。很明显,这种方法很容易超时,事实也是,有两个还是三个测试点超时了,因此我再考虑了第二种方法。动态规划的方法第一种方法超时的原因,一部分是来自于重...

2020-02-03 17:01:40 266

原创 PAT真题(C/C++)——1041:Be Unique

这道题也属于送分题,可是我却学到了一些新的东西。之前在另一道题中学到了使用unordered_map代替map能够提高检索效率,因此本来准备这道题直接使用unordered_map来实现,因为只要map不进行排序,我就可以按照输入顺序遍历unordered_map,能够省下不少的操作。但是却发现,始终有三个测试点无法通过,查阅后发现,unordered_map是哈希表实现,所谓的unorder...

2020-02-01 22:33:10 186

原创 Carsim基本使用方式

最近由于项目原因需要接触一下carsim,这里总结了一些基本使用方式供大家参考~1 Carsim软件概述1.1 基本功能描述CarSim是专门针对车辆动力学的仿真软件,CarSim模型在计算机上运行的速度比实时快3-6倍,可以仿真车辆对驾驶员,路面及空气动力学输入的响应,主要用来预测和仿真汽车整车的操纵稳定性、制动性、平顺性、动力性和经济性,同时被广泛地应用于现代汽车控制系统的开发。2 界...

2020-02-01 13:42:07 11148 3

原创 PAT真题(C/C++)——1027:Colors in Mars

这道题要是考试能遇到,全村敲锣打鼓摆三天流水席。就是一个进制转换完事了,一点多于操作都没有。#include <iostream>#include <algorithm>#include <string>using namespace std;char p[] = "0123456789ABC";string ps(int n){ s...

2020-02-01 13:33:38 452

原创 PAT真题(C/C++)——1022:Digital Library

中间断断续续很多题没有更新解法,趁着病毒肆虐出不了门,就把这些都写了。代码之前都写好也通过了,这里就大致说一下算法,细节的问题能想起来就写把~这道题属于看着文字很复杂,输入很繁琐,但是实际做起来还不难。题目就是要输入一堆书,然后按照要求进行检索,并且检索结果要根据id大小顺序输出。依旧是,编写sort()函数的排序规则,先把所有书进行排列,排序的依据就是id大小,然后检索的时候从头开始检...

2020-02-01 13:28:26 328

原创 PAT真题(C语言)——1025:PAT Ranking(sort()的另一次应用)

这道题不难,本质就是一个排序,包括局部排序和整体排序,可以想到的基本方法有两种:先局部排序,保存下每个人的局部排名,再进行总体排序计算总排名;先总体排序,并依次输出每个人的总体排名,并同时计算每个人的局部排名;我采用的是第二种方式。局部排序的原理和总体排序相同,这里只说一下总体排序的方式。首先排序肯定是用sort函数,其排序规则定义为:如果分数不同,则分数高的在前,否则id号小的在...

2020-01-30 11:03:09 168

原创 PAT真题(C语言)——1038:Recover the Smallest Number(sort()使用心得)

本题就是排序然后输出就行了。由于是字符串。因此需要定义好排序的规则,怎样的字符串应该放在前面,举例说来,32和321谁更大?我最初的想法是,首先按位比较,由于321的位数更多,当到达第2位时(从0开始计数),将321的第二位再与32的第0位比较,如此反复。int big(string s1, int p1, string s2, int p2){ int i = 0; for (i =...

2020-01-29 13:00:35 138

原创 PAT真题(C语言)——1021: Deepest Root

在写题目前先写一些自己的感想。之前刷题一直是自己在楞刷题,倒是也解决了很多问题,可是没有形成一套有效的模板。其实写代码这个东西还是有套路的,什么时候该快排,什么时候该深度遍历,掌握了这个套路很多问题都能迎刃而解,尤其还是PTA这种套路还比较明显的题库。这道题自己做的时候有两个测试点一直过不去,于是决定沉下心好好看看别人的,参考了《算法笔记》和网上大神的代码,发现自己真的还很不够。之前一直不想...

2020-01-15 16:32:09 191

原创 PAT真题(C语言)——1015:Reversible Primes

水题一道,就是判断自己是不是素数,然后按照对应进制反转再判断一次就完事了。不过说起素数,今天偶然看见的应该是主流的素数判断方法,就是埃氏筛算法,算法的思想就是选择当前最小的素数,然后去掉所有它大于等于2倍的倍数,循环这个过程,最终可以得到所有素数。我在做的时候也算利用了一下类似的思想,如果这个数不是2的倍数,那么在递增除数的时候就自加2而非自加1,这样能减少一半的遍历量。总之,下面就是代码...

2019-12-30 19:38:29 171

原创 PAT真题(C语言)——1014:Waiting in Line

这道题我找到了解决的方法,可是不得不说,写出来的代码真的是丑陋无比,各种数组嵌套嵌套,很容易就把自己套晕了,果然不能乱套娃……直接说一下解决思路吧。客人分两种:黄线满之前来的和黄线满之后来的。对于黄线满之前来的,只需要判断哪一列人最少就直接把他放到那一列就行了。对于黄线满之后的,我想到了一个方法:假如每一列黄线内最多排M个人,那么只要去判断每一列的倒数第M个人谁先服务完就分配他到哪一列。...

2019-12-30 12:01:58 187

原创 PAT阶段性小技巧总结

之前去学科目一,懒散了,代码落下了好多天,这样是不行的啊,冬季的PTA肯定是没戏了,先练着吧,春天再说吧……先说点题目以外的,之前真的是绕了不少的弯路,很多使用的小技巧都没有用过,这里着重说两个,两个都是关于输入数据的。时间输入对于时间输入,比如一月一号的两点十五,期望输入是01:01:02:15,按照之前的想法就是按字符串接收,然后写一个字符串转整形的函数来便于计算,可是!!!我没想到C...

2019-12-26 19:48:06 202

原创 PAT真题(C语言)——1013:Battle Over Cities

这道题可是折磨了我好长时间,果然我还是太菜了。。。这道题看着就觉得时间复杂度会很高,至少得是个三重循环。刚开始想的比较简单,就想着判断连接的点是否是度为1,是的话就得多条路,果不其然出问题了(虽然也过了两个测试点……),后来学习了才知道,这得算它的最大联通分量,最大联通分量减一就是结果,而最大联通分量则需要深度优先遍历。那么捋一捋,首先遍历需要检查的城市,然后将城市设为不可访问,再去遍历已...

2019-10-23 12:05:16 142

原创 PAT真题(C语言)——1012:The Best Rank

这道题我的方法比较暴力,就是对每个查询学生,把他们的成绩依次拿去和别的同学比较,本来是想先把每一科排一下序,但是后来一想排完序在去搜索每个同学用的时间也不一定会好很多,干脆就粗暴一点了(当然,排序也是很好的方法,可以用三个数组来分别存这些成绩然后排序),我的代码如下:#include <stdio.h>#define MAX 2000int main(void){ ...

2019-10-16 15:10:58 159

原创 PAT真题(C语言)——1011:World Cup Betting

儿童题目,输入然后判断最后算就行,可以一边输入一边算,显得代码少,代码如下:#include <stdio.h>int main(){ float sum=1; float input[3]; int result[3]; float big = 0; char r[3]={'W','T','L'}; for(int i=0;i...

2019-10-16 14:12:02 156

原创 PAT真题(C语言)——1010:Radix

在连做了几道简单题以后,突然被这么一道难住,心态还是有点崩的,尤其还是怎么调试都调试不出来,终于,收集了各方资料,不断修改算法,总算拿到了AC,喜大普奔~现在说题目,题目要求找另一个数是否存在在某一个进制的情况下等于指定的数,这道题的陷阱可以总结如下:进制的范围:题目只说了单个数的范围不超过35,但并没有说进制不能超过35;数的大小:单纯的int是不足以拿到这道题的AC的,但好在使用lo...

2019-10-15 17:50:31 224

原创 PAT真题(C语言)——1009:Product of Polynomials

方法基本和1002题一样,只不过这里用二重循环实现相乘的过程。唯一要注意的一点是,对于系数为0的项是不计入统计的,这里系数为0不光是输入的两组数中包含系数为0,还有可能是在某个结果本来不为0(比如系数为-1.5),加上了新的系数(如1.5)后就为0了,因此每次做完加法还要再判断一次,否则第一个测试点通不过,代码如下:#include <stdio.h>#define SIZE...

2019-10-10 14:07:32 281

原创 PAT真题(C语言)——1008:Elevator

儿童题目,就边输入边算就完事了,目测也不太可能有时间更有的了,上代码吧:#include <stdio.h>int move(int i){ if(i<0) return (i*(-1)*6); else return i*4;}int main(void){ int time = 0; int N;...

2019-10-10 11:31:00 181

原创 PAT真题(C语言)——1007:Maximum Subsequence Sum

这道题简单粗暴,二重循环不断判断就行,遇见更大的就换起点和终点,小技巧是,如果遍历的第一个数是负数就可以直接跳过此次循环开始下一次。#include <stdio.h>int main(void){ int N; int a[100000]; int sum = -9999999; int start = 0; int end = 0;...

2019-10-09 20:15:13 156

原创 PAT真题(C语言)——1006:Sign In and Sign Out

这道题不是我看不起他,真的就没啥意思,就输入,判断,输出就完事了,嗯,代码在下面:#include <stdio.h>#include <string.h>#define NUM 100int main(void){ int N; char ID[NUM][15]; char arrive[NUM][8]; char leave...

2019-10-09 14:23:28 129

原创 PAT真题(C语言)——1005:Spell It Right

这道题就很简单了,就相加然后依次输出就完事了,有一点要注意的是输入的数N是小于等于10^100的,如果只是用int去接收输入,就会有两个测试点通不过(别问我怎么知道的……),所以需要用一个大小为101的字符数组接收。另外就是,最后相加的结果最大也就是一百个9相加,肯定不会超过900,所以用三个int去分别存结果每一位就行了,就不多说了,代码在下面:#include <stdio.h&g...

2019-10-09 13:56:35 225

原创 PAT真题(C语言)——1004:Counting Leaves

这道题最初的想法是从根节点层开始按层遍历,按次序计算出每一层叶节点的数量,但是发现这样做需要很多的中间变量来保存各种数据,变量一多就容易逻辑混乱。看见树就很自然想到递归,这道题也不例外。传统树的递归是建立在用struct组成的树上,这道题的话差异不大,核心思想就是深度优先遍历,按一个方向一直向下探索,如果遇到叶节点则在对应层增加一个叶节点数,否则继续向下,代码如下:#include <...

2019-10-09 13:52:32 285

原创 PAT真题(C语言)——1003:Emergency

题目如下:这道题是一道典型的求最短路径,我采用的是Dijkstra最短路径算法。和传统的最短路径不同的是,这道题里的节点间举例不是用一个N*N矩阵表示,而是分别列出了每条路径的起始城市、终点城市和路径长度。这道题花了我不少时间,主要调了很久的bug终于调通,先把整个流程大致讲一下,例子就用题目中给出的例子。传统的Dijkstra算法的流程如下:下表中,最左边一列代表不同的终点,表格内容中...

2019-10-06 21:33:04 441 1

原创 PAT真题(C语言)——1002:A+B Polynomials

题目如下:这道题目学习了网络上一种很精妙的方法,在这之前我的设计是老老实实的用一个超大数组,按照输出顺序依次存入这些数,这样做的弊端在于:这样的设计需要三个数组,分别用于存储输入的第一行、输入的第二行和输出的行,并且在向输出行复制数据时需要进行大量的判断,如果说,题目明确输入的数据按照指数大小从大到小排列,那么输出会容易一些,但是题目并未说明这一点(不过作为多项式输入,我觉得一般也是从大到小排...

2019-09-29 09:50:05 339

原创 PAT真题(C语言)——1001:A+B Format

今天已经是九月26日了,突然心血来潮想去考十二月的PAT,但目前的代码水平还刚到幼儿园水平,就用这个博客记录一下刷题的心得吧。今天是第一题。题目如下:Calculate a+b and output the sum in standard format – that is, the digits must be separated into groups of three by commas...

2019-09-26 20:23:51 349

原创 64位先行进位加法器的原理

最近体系结构课程学到了CPU功能部件部分,其中谈到了先行进位加法器,网上对32位和16位加法器说的比较多,但64位的参考比较少,研究了好久终于能大致明白,在此把自己的理解做个记录供大家参考~本文参考自中科院胡伟武老师的《计算机体系结构》第2版。本文章分三部分:1.串行进位加法器2.16位串行进位加法器3.64位串行进位加法器1.串行进位加法器加法运算的重要性对于一个CPU来说不言...

2018-12-01 20:47:14 12064 7

原创 Palindrome Linked List回文链表判断C语言解决

Palindrome Linked List题目来自于leetcode,在此提供个人的解法,题目如下:Given a singly linked list, determine if it is a palindrome.Example 1: Input: 1-&amp;gt;2 Output: falseExample 2: Input: 1-&amp;gt;2-&amp;gt;2-&amp;gt;1 Output:...

2018-11-29 13:21:01 518 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除