美文网首页
PAT初级刷题思路汇总

PAT初级刷题思路汇总

作者: qratosone | 来源:发表于2016-02-29 23:53 被阅读0次

1036?

输入时忽略某字符:

cin.ignore()

或者直接用scanf

1021 个位数统计

用一个计数器数组来统计每个数字出现的频率

1023 组个最小数

算法:用一个数组a存储出现的数字数,输入时同时获得非0的min

输出时先输出一个min,然后从头遍历存储数组——当a[i]>0时输出一个i并让a[i]–

1043 输出PATest

while scanf!=EOF——检测输入,当没有输入时跳出循环

算法:如果当前输入的字母是PATest其中之一的话则直接让字母对应的计数器变量+1

输出时依次输出PATest,每输出一个就让对应计数器减一

1009 说反话

while cin>>str自动按空格切分并输入到str

用一个stack储存放进来的str,对应头文件stack

1011 A+B和C

大整数直接用long long int

1004 成绩排名

使用一个class数组student,用first和Last记录当前的最大和最小编号,然后直接输出即可

1038 统计同成绩学生

用一个vector储存输入的成绩,然后用一个计数器数组储存对应每个数字出现的频率

1031 查验身份证

对输入的身份证号进行检查:

如果前十七位发现字母直接break,反之则按照权重计算出当前的数temp,加到checkCount中,算完之后对11取mod

用数组checkNum记录计数器i对应的输入ID是否合法,合法为1不合法为2

如果循环没跑完则直接记为0

跑完了则检验最后一位是否符合

1008 数组元素循环右移

写一个函数让数组整体右移一次,具体做法是从后往前处理以免造成覆盖

需要偏移shift位就让这个函数执行shift次

1017 A除以B

对于巨大的整数,作为string输入

从第一位开始,每次都执行temp=temp*10+下一位操作,然后每执行完一次直接取余数

1022 D进制

用stack做进制转换——连续取余,然后将mod推入stack

1027 输出沙漏

总星号数计算公式total=2*count^2-1

对于前count行,第i行输入i个空格和2count-1-2i个星号,注意结尾不要输入空格

反向输入同理

1032 挖掘机

用计数器数组计算各校得分,然后搜索得分最高的学校及其总分

1042 字符统计

写个函数判断是否为字母

使用map<char,int> frequency,如果s[i]是字母则frequency[s[i]]++

map<char,int>::iterator it

it->first为字母,it->second为出现个数

1029 旧键盘

首先全部转换为大写

用一个set来统计数字(去重)——set.insert返回的是一组pair,使用second返回插入成功与否的提示,如果插入成功则推入候补向量中

1007 素数对猜想

先生成素数列表,然后再检验素数对

1013 数素数

生成素数列表,然后输出即可——注意输出格式

1028 人口普查

定义一个类elder,建立一个函数成员too young,判断当前最年轻和最年长的

注意年龄计算公式是否合法

1005 3n+1继续

使用计数数组,把每一步产生的中间值tmp记录到计数数组中

f[tmp]=1

如果计数数组里没有,!f[input[i]],就是关键数,推入输出向量中

1019 数字黑洞

先把输入的数字每一位都保存到数组中,然后排序

按从小到大和从大到小分别还原得到big和small

输出方式printf(%04d-%04d=%04d\n)

1010

使用bool型标记变量flag

1030 完美数列

输入后排序,然后两层嵌套循环

maxlen=0,for i=0(for j=i+maxlen) if maxlen<j-i maxlen=j-i

1020 月饼

sort的比较函数cmp——return a<b为升序排列

输出保留两位小数printf %.2f

注意为了保证精度,全程使用double

1003 我要通过

对于xPATx形式,P的个数与A的个数乘积应该等于T的个数

1014 福尔摩斯

尽量用For循环,然后求星期的时候两个序列一起往前走(只考虑字符一一对应的情况)

1025 反转链表

用数组addr保存每个链表在向量中的位置,对应temp.address

int count=0

vinput.pushback temp

addr[temp.address]=count++

memset来自于memory.h

遍历时从初始地址进入,在input中找到对应链表后推入vector中

p=init

int pos=addr[p]

linknode.pushback vinput[pos]

p=vinput[pos].next

系统自带reverse函数,来自头文件algorithm

1045 快速排序

主元的条件:恰好位于正确的顺序上,且为当前最大元��

1015 德才论

重写sort cmp函数

1044 火星数字

getline(cin,input[i](字符串),‘\n’)注意第一个可能是废的

获取子字符串的方法:string.substr(begin,end)

另外注意高位为整数(恰好为26)低位为0时不要输出

1040 有几个PAT

从后往前数,PAT的数量等于P的数量乘A再乘T

if i=T numT++

if i=A numAT+=numT

if i=P numPAT+=numAT

1033 旧键盘打字

getline读取一行

定义一个判断函数notbad,对一个字符搜索bad字符串:

如果有大写,且+在bad里则返回false

全部转化为小写再一一判断

判断通过之后直接用putchar输出即可

相关文章

  • PAT初级刷题思路汇总

    1036? 输入时忽略某字符: cin.ignore() 或者直接用scanf 1021 个位数统计 用一个计数器...

  • 简明刷题指南

    1. 刷题网站 HDUOJ Welcome To PKU JudgeOnline PAT Codeforces A...

  • PAT刷题感悟

    PAT (Basic Level) Practice (中文) 1001 我特么就多写了个while(1)就通不过...

  • PAT刷题技巧

    PAT 是什么 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一...

  • PAT刷题榜帮助

    PAT题目集 所有代码采用C++编译器通过(现在又加入了Python 2.x) 本人没有系统学习过C++,只有C的...

  • PAT乙级刷题总结

    开始先说最重要心得体会: 写代码前,先在纸上写写画画,写下伪码,理清思路,别上来就敲代码,效率极低还易出现bug。...

  • 1021 Deepest Root (25 分)

    PAT原题 ⚠️此题不能使用邻接矩阵,否则内存会超限,得使用邻接表。解决思路: 连通分支+广度优先遍历 首先广度优...

  • 刷题(这是必须要迈过的坎)遇到不会,从这找思路,从这提问!202

    遇到不会,从这找思路,从这提问。 刷题遇到的问题VS刷题的正确思路(第一遍要刷好)还是参考huahua说的。目标让...

  • 刷题编程思路总结

    如何想出解题编程思路和算法? 观点1 在假设题主懂编程语言基础语法的前提下,我提供以下思路1.首先从问题的基本定义...

  • LeetCode刷题思路总结

    回溯 今天自己去解了一道组合的问题,从循环暴力慢慢走到回溯的思路,今天就挺明白了。 凡是排列组合问题,正常的循环处...

网友评论

      本文标题:PAT初级刷题思路汇总

      本文链接:https://www.haomeiwen.com/subject/wpigkttx.html