自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学无止境

分享一下自己的学习历程

  • 博客(49)
  • 收藏
  • 关注

原创 PAT乙 1049 数列的片段和 (GO)

解题思路:这是一个数学题,找到规律就ok了N:个数;i:当前下标(从0开始)sum = value * (N - i) * (i + 1)循环计算一遍即可package mainimport ( "bufio" "fmt" "os" "strconv" "strings")func main() { var N int _, _ = fmt.Scanf("%d"...

2019-07-20 18:02:26 112

原创 PAT乙 1048 数字加密 (GO)

解题思路:题目意思比较简单,从后往前,根据当前个数的奇偶数来分别计算这时就会有个问题,2个字符串长度问题,这里有个坑,只有等到2个字符串都循环到最后一位才停止,中间有一个字符串长度不够了,用0来补上package mainimport "fmt"func main() { var A, B string var result []int _, _ = fmt.Scanf(...

2019-07-20 17:58:09 169

原创 PAT乙 1047 编程团体赛 (GO)

解题思路:比较简单,如果用数组下标来表示的话,数组长度要注意。简单点就用map吧package mainimport ( "fmt")func main() { var n int var group, number, score int var result map[int]int _, _ = fmt.Scanf("%d", &n) result = m...

2019-07-20 17:52:31 128

原创 PAT乙 1046 划拳(GO)

package mainimport ( "fmt")func main() { var n int jWin, yWin := 0, 0 var number [4]int _, _ = fmt.Scanf("%d", &n) for i:=0; i<n; i++ { _, _ = fmt.Scanf("%d%d%d%d", &number[...

2019-07-20 17:44:17 1023

原创 PAT乙 1045 快速排序 (GO)

PAT乙 1045 快速排序 (GO)解题思路:暴力搜索肯定是不行的,对于go的话用scanf会超时,这里我先读入一行字符串然后转成整型数组主元就是比左边的大,比右边的小,而且排序后位置不变经过一轮排序,当前位置的数字如果和排序后的数字一样,并且比前面所有的数都大提供几个测试用例供大家参考:91 3 5 2 4 6 9 8 721 691 2 3 6 5 8 7 4 9...

2019-07-20 17:42:13 128

原创 PAT乙 1044 火星数字 (GO)

1044 火星数字解题思路:本题有2类输入输出,输入火星文输出地球文,输入地球文输出火星文判断输入的是哪一类文字,这个位置我是根据GO语言中的方法来判断的1)strings.Fields把读入的字符串按照空格分隔成字符串数组2)strconv.Atoi 把字符串转成数字如果字符串数组>0并且数组的第一个值无法转成整形则为火星文,反之地球文测试点2,4需要注意存在高位和地位,当...

2019-07-15 16:16:43 159

原创 PAT乙 1043 输出PATest (GO)

1043 输出PATest解题思路:package mainimport ( "bufio" "fmt" "os")func main() { var number [6]int var chars = [6]byte{'P', 'A', 'T', 'e', 's', 't'} var inputReader *bufio.Reader inputReader = ...

2019-07-15 16:09:07 118

原创 PAT乙 1042 字符统计(GO)

package mainimport ( "bufio" "fmt" "os")func main() { var flag map[byte]int var maxByte byte var inputReader *bufio.Reader inputReader = bufio.NewReader(os.Stdin) flag = make(map[byte]i...

2019-07-15 16:05:32 115

原创 PAT 乙 1041 考试座位号 (GO)

package mainimport ( "fmt")type Student struct { id string seat int examSeat int}type Students []Studentfunc main() { var s Students var n, m int var id string var seat, examSeat i...

2019-07-15 16:03:48 85

原创 PAT乙 1040 有几个PAT (GO)

PAT乙 1040 有几个PAT (GO)解题思路:先一次循环找出T的数量再次遍历,记录P的数量,如果中间出现了A,那么这时候能够组成PAT的数量为A前面的P*末尾的T,如果出现T则T=T-1package mainimport ( "bufio" "fmt" "os")func main() { var countT, countP int var result...

2019-07-15 16:01:20 138

原创 PAT乙 1039 到底买不买 (GO)

PAT乙 1039 到底买不买 (GO)思路:用字符串读入,转成字节数组循环把目标数组读入到map再一次循环小红想做的数组,把小红想要的颜色依次去map中匹配,看是否存在,不存在则缺少的变量++最后查看缺少的变量是否>0package mainimport ( "fmt")func main() { var s1,s2 string var lack in...

2019-07-15 00:09:02 94

原创 PAT乙 1038 统计同成绩学生 (GO)

PAT乙 1038 统计同成绩学生(GO)思路:最简单的思路,百分制的分数,可以定义一个长度为100的数组,分数对应下标,读入一个分数,就在对应数组下标的数组中+1然后读入第二行,需要查询的个数和对应的分数,输出下标对应的值即可最后一个测试用例容易超时,所以建议用字符串读入,字符串读入如果依旧用int数组,那么字符串转整形也需要一段时间,所以用map性能会高于int数组package...

2019-07-15 00:01:20 110

原创 PAT 乙 1037 在霍格沃茨找零钱 (GO)

PAT 乙 1037 在霍格沃茨找零钱题目比较简单首先按照比例统一转换成最小单位纳特然后相减,得到找零或者还需多少再按照比例转换输出package mainimport ( "fmt" "math")func main() { var g1,g2,s1,s2,k1,k2 int _, _ = fmt.Scanf("%d.%d.%d %d.%d.%d", &g1...

2019-07-14 23:12:07 154

原创 PAT乙 1036 跟奥巴马一起编程 (GO)

PAT乙1036跟奥巴马一起编程有问题可以留言交流哈

2019-07-14 23:05:38 95

原创 PAT乙 1035 插入与归并 (GO)

思路:本题浪费了一点时间,和大家一样都以为是考察插入排序和归并排序,我就先把插入和归并排序都写好了。后来发现并不没有那么简单。理解插入排序和归并排序的特征插入排序是依次从数组中取一位,插入到前面的数组。插入排序在了解插入排序的基础上,我们可以循环已经排过序的数组,数组是否从小到大排序,直到a[i] > a[i+1],并且数组剩下的部分和原始数组一致,则可以判定为是插入排序,反之为归...

2019-07-14 23:00:44 141

原创 PAT乙 1034 有理数四则运算 (GO实现)

解题:本题没有什么难的点,看着有点吓人,感觉是代码量比较大。最初用GO写的时候,用bufio读入字符串,发现中间转换起来会非常耗时,期间一直有一个测试点一直超时,最初还以为是分子相乘时导致超过范围引起的,还特意写过一个大数相乘崩溃!!而且代码比较长,后来参考了一篇大神写的代码,给了我很大的启发,其实并不需要用字符串读入,按照正常的fmt.Scanf("%d/%d %d/%d")读入int即...

2019-06-21 16:13:43 167

原创 PAT乙 1033 旧键盘打字(GO实现)

解题思路:1.本题的难点应该是’+’,如果存在’+‘为坏键,则所有的大写字符都该过滤2.同样首先讲输入,用bufio读入防止超时,但是需要相应转换3.首先判断坏键,是否存在’+’,刚开始写的时候,感觉有个误区,字符’+‘和大写字符同为坏键时,我以为可能是由于’+‘坏了导致大写字母出不来并不代表’ie’键是坏的,这是错误的,我发现只要’IE’或者’ie’为坏键就表明’ie’键为坏键。4.遍历...

2019-05-29 16:24:49 148

原创 PAT乙 1032 挖掘机技术哪家强(GO实现)

解题思路:1.本题其实只需要定义一个数组,然后以学校编号为下标,存储对应的总分数即可2.go语言的话为了在输入不超时用bufio读入一个字符串,然后strings.Fields以空格拆分成字符串数组,之后strconv.Atoi转换成数字,按照对应下标与当前值相加即可。3.输入完毕其实已经计算完成了,这时只要求出最大值就好,最大值为分数,下标则未学校编号package mainimpo...

2019-05-29 15:24:41 121

原创 PAT乙 1031 查验身份证(GO实现)

解题思路:身份证18位,前17位根据给出的权重,求加权值,以加权值%11的模为下标,取对应的校验码。比较身份证的第18位,如果不同则放入输出数组。当然如果前17位中存在非数字也放入输出数组。最后只需要判断输出数组是否为空,空则all passed,不为空依次输出即可package mainimport ( "fmt")func main() { var N int var i...

2019-05-29 15:14:26 150

原创 PAT乙 1030 完美数列(GO实现)

本题思路简单,概括起来讲就是输入,排序,动态规划,输出1.输入部分,go如果用Scanf读入会超时,用bufio不会超时,但是在string转int时由于精读问题会出错2.排序没什么好讲的,一般都有封装的方法sort,当然自己排也没问题,但要注意效率3.这一部分是本题的关键点,其实就是在排序完的序列中,求最长的子序列满足M<=mp,我这里用pSum表示前一个最长的len,sum表示最长...

2019-05-29 14:31:42 123

原创 PAT乙 1029 旧键盘 (GO实现)

定义map用来标记真实的输入,key用来存储字符,然后循环期望的输入,如果期望输入中的字符没有在真实输入中标记出来则为坏键。这里需要注意的是字母输出都为大写package mainimport ( "bufio" "fmt" "os")func main() { var flag map[byte]int var printFlag map[byte]int var i...

2019-05-08 21:10:22 105

原创 PAT乙 1028 人口普查 (GO语言)

解题思路:第3个测试点错误,这个比较坑,存在所有的输入都是不符合,有效个数为0,直接输出0即可1.直接用字符串比较,不需要把后面的字符串再拆分成年月日2.因为这题有时间区间,首先定义最年轻的1814/09/06,最年长的2014/09/063.接下去,每一次输入都比较一下,合适的就替换年轻/年长。4.GO实现需要用bufio输入,不会超时package mainimport ( ...

2019-05-08 19:13:33 145

原创 PAT乙 1027 打印沙漏 (GO语言)

找到规律,这题不难,有个坑点,*后面没有多余空格package mainimport ( "fmt")func main() { var n int var tag byte var sum, nextSum int _, _ = fmt.Scanf("%d %c", &n, &tag) sum = 1 nextSum = 1 i := 1 las...

2019-05-07 18:47:51 147

原创 PAT乙 1026 程序运行时间 (GO实现)

比较简单,go实现的话就是四舍五入的问题,(+0.5然后向下取整)package mainimport ( "fmt" "math")func main() { var C1,C2 float64 _, _ = fmt.Scanf("%f %f", &C1, &C2) result := int(math.Floor((C2 - C1)/100.0 + 0...

2019-05-07 18:44:45 100

原创 PAT乙 1025 反转链表 (GO语言)

解题思路:这题花的时间最久,起初没有什么思路,一直在考虑链表的反转问题,还有递归什么的,感觉反而把问题想复杂了,还是直接用数组来模拟最简单。测试点5超时问题,如果用go实现,用bufio读入测试点6,应该是输入的节点数据,有的并不是链表数据,也就是说真的链表长度和输入的N可能不一致1.输入数据,用map[Address] = node。就是用map保存节点数据,以节点地址作为key2.用...

2019-05-07 18:38:38 153

原创 单链表反转 递归实现 GO语言

链表是一种比较常见的数据结构单链表的反转用递归实现比较简单,这里简单讲一下。首先定义节点func reverseList(node *Node) *Node { if node.next == nil { return node } else { newHead := reverseList(node.next) node.next.next = node node.ne...

2019-05-06 23:45:51 608

原创 PAT乙 1024 科学计数法 (GO实现)

解题思路:1.找到E的位置,然后记录,并且记录E后面的符号位,根据E后面的字符计算出整数2.第一位如果是’-‘输出,如果是’+'跳过3.输出计算出小数点的正确位置package mainimport ( "fmt" "math")func main() { var str string var target byte var posE, total, sum int...

2019-05-03 23:29:05 441

原创 PAT乙 1023 组个最小数 (GO实现)

解题思路:1.理解题意输入:2 2 0 0 0 3 0 0 1 0表示:2个0,2个1,3个5,1个82.用数组下标0-9来存储输入的每一位数字3.因为0不能第一个输出,我这边的解法是先输出一位非0的最小数,对应的个数-1,然后break4.再次遍历输出所有的数字package mainimport ( "fmt")func main() { var number ...

2019-05-03 23:21:27 85

原创 PAT乙 1022 D进制的A+B (GO实现)

解题思路:1.需要知道进制数的取法,简单来说十进制转换为八进制,除8取余,直到除数小于8例如:123 456 8 /579 8579 % 8 = 3 579/8 = 7272 % 8 = 0 72/8 = 99 % 8 = 1 9/8 =11 % 8 = 1结果为: 11032.理解了十进制转八进制,那么其他也就如此了,只要把8替换成其他进制数就可...

2019-05-03 22:44:10 121

原创 PAT乙 1021 个位数统计 (GO语言实现)

解题思路:本题用数组实现简单hash map比较简单1.因为整数的每一位都在0-9之间,所以定义数组[10]就够了2.用字符串读入,这里用GO我就直接转成字节数组,遍历一遍数组,‘9’-'0’为整数9,对应的下标+13.遍历一遍存储个数的数组就ok了package mainimport ( "bufio" "fmt" "os")func main() { var n...

2019-05-03 22:32:40 126

原创 PAT乙 1020 月饼(GO实现)

解题思路:1.获取每个商品的单价2.按照单价排序3.先满足单价最高的,依次递减。直到需要的数量被填满,或者所有商品的库存为0package mainimport ( "fmt" "sort")type Product struct { stock float64 price float64 average float64}type Products []Produc...

2019-05-03 22:24:37 120

原创 PAT乙 1019 数字黑洞 (GO)

解题思路:输入一个4位数1.分解4位整数变成一个数组2.排序(无论顺序还是倒序)3.这里限制了4位整数,所以比较简单,直接计算最大,最小数4.计算后判断是否为0或者6174package mainimport ( "fmt")func main() { var n int _, _ = fmt.Scanf("%d", &n) for true { var ...

2019-04-29 22:49:44 105

原创 PAT乙 1018 锤子剪刀布 (GO实现)

解题思路:1.由于超时问题,把scanf替换成bufio2.定义2个数组,下标0,1,2分别表示用’B’,‘C’,'J’赢的次数,这样输出的时候就不用考虑默认B的情况了3.定义win,lose,same变量,win和lose相个反就是对方的赢输次数package mainimport ( "bufio" "fmt" "os")func main() { var n i...

2019-04-29 00:05:40 189

原创 PAT乙 1017 A除以B (GO实现)

解题思路:1.首先考虑只有一位的情况2.多位数的时候,被除数如果小于除数,向后借位的时候,要考虑补0,我这边时候都考虑了补0,包括第一位如果小除数的情况,后面输出的时候再做判断,把前面不需要的0过滤掉package mainimport ( "fmt")func main() { var str string var n int fmt.Scanf("%s%d", &a...

2019-04-28 23:56:29 117

原创 PAT乙 1016 部分A+B (GO实现)

解题思路:这题比较简单,首先轮询2个字节数组,取出对应数字的个数,然后经过运算得到相应的值,再相加。一次就过了,好像也没有什么坑点package mainimport ( "fmt" "math")func main() { var str1, str2 string var n1, n2 int fmt.Scanf("%s%d%s%d", &str1, &a...

2019-04-28 23:49:09 180

原创 PAT乙 1015 德才论 (GO实现)

解题思路:首先按题意分4类,假设d为德分,c为才分1.前提首先d和c必须大于L2.第一类:d>H && c>H 才德全尽3.第二类:d>H && c<H 德胜才4.第三类:d<H && c<H && d>c 才德兼亡,但尚有德胜才5.第四类: 其他6.排序:(1.分类,2.分...

2019-04-28 23:45:17 99

原创 算法基础之插入排序(GO实现)

插入排序是排序算法中比较基础的一种,当数据量少的时候,性能也是不错的。直接拿一个例子讲解会比较直观。伪代码如下:for j=2 to A.length key = A[j]; i = j - 1; while i > 0 && A[i] > key A[i+1] = A[i]; i -= 1; A[i+1] = key插入排序的思想数组 : [...

2019-04-27 19:44:33 432

原创 PAT乙 1014 福尔摩斯的约会 (GO实现)

解题思路:前面2组字符串1.第1对相同的大写英文字母(A-G,我开始以为是A-Z然后%7取余,发现没意义,测试点好像也就只有A-G)2.第 2 对相同的字符(0-9,A-N)3.用flag作为标记位,标记第1,2个字符串比较时的第一次字符相等后面2组字符串1.第 1 对相同的英文字母 (a-z,A-Z)package mainimport "fmt"func main() {...

2019-04-13 12:54:57 131 2

原创 PAT(乙)1013 数素数(GO实现)

解题思路:1.知道素数是什么2.写了一个判断素数的方法3.按需计算素数,循环计算到满足需要的素数个数后break4.下面就是输出格式问题了package mainimport ( "fmt" "math")func main() { var n,m int var number [10000]int fmt.Scanf("%d%d", &n, &m)...

2019-04-03 23:18:57 89

原创 PAT乙 1012 数字分类(GO实现)

没什么好写的,emmmmpackage mainimport "fmt"func main() { var n,m int var a1,a2,a5 = 0,0,0 var a4 = 0.0 var count1,count2,count3,count4,count5 = 0,0,0,0,0 fmt.Scanf("%d", &n) for i:=0; i<n...

2019-03-31 23:17:34 97

空空如也

空空如也

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

TA关注的人

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