PAT乙级解题算法和代码目录

本文精选了PAT算法竞赛中的经典题目,涵盖数学、字符串处理、排序、查找、散列、贪心算法等多个方面,旨在为参赛者提供实战演练的机会,深入理解各种算法原理及应用。

ID          Title                                                   备注
1001     害死人不偿命的(3n+1)猜想(15)         模拟
1002     写出这个数 (20)                                字符串处理
1003     我要通过!(20)                                 数学题
1004     成绩排名 (20)                                    查找元素
1005     继续(3n+1)猜想 (25)                         Hash散列
1006     换个格式输出整数 (15)                     字符串处理
1007     素数对猜想 (20)                                素数
1008     数组元素循环右移问题 (20)              模拟
1009     说反话 (20)                                       字符串处理
1010     一元多项式求导 (25)                         模拟
1011     A+B和C (15)                                     模拟
1012     数字分类 (20)                                   模拟
1013     数素数 (20)                                       素数
1014     福尔摩斯的约会 (20)                        字符串处理
1015     德才论 (25)                                       排序
1016     部分A+B (15)                                   模拟
1017     A除以B (20)                                     大整数运算
1018     锤子剪刀布 (20)                               模拟
1019     数字黑洞 (20)                                   数学问题
1020     月饼 (25)                                          贪心算法
1021     个位数统计 (15)                               字符串处理
1022     D进制的A+B (20)                             进制转换
1023     组个最小数 (20)                               贪心算法
1024     科学计数法 (20)                               字符串处理
1025     反转链表 (25)                                   链表
1026     程序运行时间(15)                             模拟
1027     打印沙漏(20)                                    图形打印
1028     人口普查(20)                                    查找元素
1029     旧键盘(20)                                       Hash散列
1030     完美数列(25)                                    two pointers
1031     查验身份证(15)                                字符串处理
1032     挖掘机技术哪家强(20)                     查找元素
1033     旧键盘打字(20)                                Hash散列
1034     有理数四则运算(20)                        分数的四则运算
1035     插入与归并(25)                                two pointers
1036     跟奥巴马一起编程(15)                     图形打印
1037     在霍格沃茨找零钱(20)                  进制转换
1038     统计同成绩学生(20)                        Hash散列
1039     到底买不买 (20)                              Hash散列
1040     有几个PAT(25)                             逻辑题
1041     考试座位号(15)                               查找元素
1042     字符统计(20)                                  Hash散列
1043     输出PATest(20)                              Hash散列
1044     火星数字(20)                                  map映射,STL的使用
1045     快速排序(25)                                  快速排序
1046     划拳(15)                                         模拟
1047     编程团体赛(20)                              Hash散列
1048     数字加密(20)                                 字符串处理
1049     数列的片段和(20)                          数学问题
1050     螺旋矩阵(25)                                 模拟
1051     复数乘法 (15)                                模拟
1052     卖个萌 (20)                                   字符串处理
1053     住房空置率 (20)                            模拟
1054     求平均值 (20)                                字符串处理
1055     集体照 (25)                                    排序
1056     组合数的和(15)                              数学问题
1057     数零壹(20)                                     进制转换
1058     选择题(20)                                     字符串处理
1059     C语言竞赛(20)                               逻辑题
1060     爱丁顿数(25)                                  逻辑题
1061     判断题(15)                                     逻辑题
1062     最简分数                                        分数化简
1063     计算谱半径(20)                              逻辑题
1064     朋友数(20)                                     STL-set的使用
1065     单身狗(25)                                     逻辑题,STL-set的使用
1066     图像过滤(15)                                 逻辑题
1067     试密码(20)                                     字符串
1068     万绿丛中一点红(20)                      逻辑题
1069     微博转发抽奖(20)                         map映射
1070     结绳(25)                                        排序,贪心
1071     小赌怡情(15)                                 水题
1072     开学寄语(20)                                 简单题
1073     多选题常见计分法(20)                   逻辑题
1074     宇宙无敌加法器(20)                      逻辑题
1075     链表元素分类(25)                          链表
1076     Wifi密码(15)                                  简单题
1077     互评成绩计算(20)                         水题
1078     字符串压缩与解压(20)                  逻辑题
1079     延迟的回文数(20)                         逻辑题
1080     MOOC期终成绩(25)                     map映射,排序
1081     检查密码(15)                                string字符串
1082     射击比赛 (20)                               逻辑题
1083     是否存在相等的差 (20)                 hash映射,map STL
1084     外观数列 (20)                               string字符串处理
1085     PAT单位排行 (25)                        排序,map STL
1086     就不告诉你 (15)                           字符串string
1087     有多少不同的值 (20)                    STL-set的应用
1088     三人行 (20)                                  逻辑题
1089     狼人杀-简单版 (20)                      逻辑题
1090     危险品装箱 (25)                          STL-map的应用

1091     N-自守数                                      字符串string
1092     最好吃的月饼                               数组,sort排序
1093     字符串A+B                                   字符串string
1094     谷歌的招聘                                   字符串string,素数
1095     解码PAT准考证                             STL-map、vector

### PAT乙级C语言题目1018解题思路 对于PAT乙级中的题目1018,该题主要考察字符串处理能力。具体来说,程序需要接收一系列学号并按照特定规则进行排序查找。 #### 输入输出说明 输入首先提供一个正整数N表示参赛人数,接着有N行数据代表每位选手的ID(四位数字)。之后再给定另一个正整数K以及紧接着的K个待查ID列表。最后的任务是对这K个ID依次判断其是否存在,并返回相应的名次或者提示不存在[^2]。 #### 主要逻辑分析 为了高效完成此任务,可以采用哈希表来存储所有参与比赛的学生信息及其对应的排名位置。当遇到查询请求时,通过O(1)时间复杂度快速定位到目标学生的位置从而得出答案。如果找不到,则表明该生未参加此次竞赛。 以下是具体的算法流程: - 初始化一个大小为`10000`的数组用于模拟哈希表; - 对于每一个读入的学生编号,在对应下标的数组元素处记录当前学生的实际序号加一(因为可能存在重复号码的情况); - 接受询问阶段,针对每个被问及的学生编号,检查预设好的哈希表中相应索引是否有值存在——若有则输出其值减去一作为真实排名;反之打印`-1`表示不在名单之内。 #### 完整代码实现 下面给出了完整的解决方案,包括必要的头文件引入、变量声明部分以及核心业务逻辑编码: ```c #include <stdio.h> int main(){ int n,k,id,i; static unsigned short rank[10000]={}; // 声明静态局部数组以节省栈空间 scanf("%d",&n); for(i=0;i<n;++i){ scanf("%d",&id); rank[id]=i+1; // 记录各成员的具体排行情况 } scanf("%d",&k); while(k--){ scanf("%d",&id); if(rank[id])printf("%u\n",rank[id]-1); else puts("-1"); } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉大秦少游

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值