网站大量收购独家精品文档,联系QQ:2885784924

PTA天梯赛L1刷题总结(三)15分题型(超详细题解).pdfVIP

PTA天梯赛L1刷题总结(三)15分题型(超详细题解).pdf

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PTA天梯赛L1刷题总结(三)15分题型(超详细题解) 多么感⼈!时隔⼀年多,我终于来更新15分题型的博⽂了。突然发现L1的题⽬量扩充了!⼀共有哦20道题。哎~都写⼀遍题解好 了。在这⾥推荐下胡凡的算法笔记!在基础算法和数据结构上给了我很多细致的讲解启发。过去刷题真想有个类型题解便于我总结学习,现 在积累了⼀些可以⾃⼰动⼿写啦!⼀个学习⼩建议:刷题不要怕困难,要坚持下去,及时总结! ⾸先对20道题进⾏⼀个分类吧~ ⽬录 ⼀、哈希映射问题 L1-003 个位数统计 此题中N是⼀个不超过 1000 位的正整数,遇到这样的问题⼀般采⽤字符串遍历的⽅式解决。(超出了整型的范围)。题⽬要求对 N 中每 ⼀种不同的个位数字,以 D:M 的格式在⼀⾏中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。 回顾⼀下int类型和long long类型有多少位 int类型 -2^31~2^31 -1 【int类型在C语⾔中占4个字节,即32个⼆进制位,最⾼位为符号位】 long long类型 −2^63,2^63 −1 【long long类型在C语⾔中占8个字节,即64个⼆进制位】 int只能表⽰到10^9,⽽long long 可以表⽰到10^18。根据不同的情况需定义不同的数据类型。 思路: 根据题⽬的要求,第⼀想到的是⽤哈希表来存储每位数字对应的次数,这个是⼀⼀映射的关系。每⼀位上就是0到9⼗个数字,⽤⼀个长度 为10的整型数组就⾏。对于出现次数为0的,就不⽤输出了。这⾥加个判断就可以。 对于字符串问题,⾸先先读⼊每⼀个字符,遇到⼀个字符,则对应出现次数+1。最后输出时如果映射的值不为0,则按照格式输出即可。 本题有两个注意点 1) memset(s,0,sizeof(s)); 是关键,对数组初始化都设置为0,否则会出错。⽤到这个时需要加上头⽂件 #include string.h 2) 注意遍历时str[i]是⼀个字符,要str[i]-0来转化为int类型 #include iostream #include string #include string.h using namespace std; int main() { string str; int s[10]; int i; cinstr; memset(s,0,sizeof(s)); // 关键,对数组初始化都设置为0,否则会出错 for(i=0;istr.length();i++) { s[str[i]-0]++; // 注意str[i 是⼀个字符,要str[i]-0 来转化为int类型 } for(i=0;i10;i++) { if(s[i]!=0) couti:s[i]endl; } return 0; } 下⾯给出第⼆种⽅法,博主去刷⼒扣时的常⽤⽅法。我们可以利⽤map来解决这个哈希数组问题。 这种⽅法有⼏个学习点 1)定义map的时候记得加上头⽂件#include map 如mapstring,int就是代表从string类型到int类型的映射,且map默认是按key值从⼩到⼤排序。 2)访问map容器内元素⽅法,⼀个是通过访问下标,⽐如下⽅的mp[c-’0’],还有⼀种就是通过迭代器(如mapint, int::iterator it)。通过it-first访问键,it-second访问值。 下边的写法可以这么写 for(mapint,int::iterator it = mp.begin();it!=mp.end();it++) { cout it-first : it-second endl; } 3)for(char c:str)这是for循环的⼀个简便写法,遍历字符串str的每⼀个字符就是c,也就是⽅法⼀中的str[i],⽐⽅法⼀的遍历要⽅ 便很多对吧。 #include iostream #include string #include string.h #include map using namesp

文档评论(0)

. + 关注
官方认证
文档贡献者

专注于职业教育考试,学历提升。

版权声明书
用户编号:8032132030000054
认证主体社旗县清显文具店
IP属地山东
统一社会信用代码/组织机构代码
92411327MA45REK87Q

1亿VIP精品文档

相关文档