本文借助PAT的甲级和乙级题库进行算法学习,目录结构和代码有部分参考算法笔记,在算法笔记给的参考代码上改进了很多,有些题目使用了原创的更简单的解题思路,也有很多题目本人采取了多种解题方式供读者参考。
复试上机算法学习目录
1.入门模拟
1.1简单模拟
Title | 题目 | 分值 | 参考代码 |
B1001 | 害死人不偿命的(3n+1)猜想 | 15 | C++ |
B1011 | A+B 和 C | 15 | C++ |
B1016 | 部分A+B | 15 | C++ |
B1026 | 程序运行时间 | 15 | C++ |
B1046 | 划拳 | 15 | C++ |
B1008 | 数组元素循环右移问题 | 20 | C++ |
B1012 | 数字分类 | 20 | C++ |
B1018 | 锤子剪刀布 | 20 | C++ |
A1042 | Shuffling Machine | 20 | C++ |
A1046 | Shortest Distance | 20 | C++ |
A1065 | A+B and C | 20 | C++ |
B1010 | 一元多项式求导 | 25 | C++ |
A1002 | A+B for Polynomials | 25 | C++ |
A1009 | Product of Polynomials | 25 | C++ |
1.2查找元素
Title | 题目 | 分值 | 参考代码 |
B1041 | 考试座位号 | 15 | C++ |
B1004 | 成绩排名 | 20 | C++ |
B1028 | 人口普查 | 20 | C++ |
B1032 | 挖掘机技术哪家强 | 20 | C++ |
A1011 | World Cup Betting | 20 | C++ |
A1006 | Sign In and Sign Out | 25 | C++ |
A1036 | Boys VS Girls | 25 | C++ |
1.3图形输出
Title | 题目 | 分值 | 参考代码 |
B1036 | 跟奥巴马一起编程 | 15 | C++ |
B1027 | 打印沙漏 | 20 | C++ |
A1031 | Hello World for U | 20 | C++ |
1.4进制转换
Title | 题目 | 分值 | 参考代码 |
B1022 | D进制的A+B | 20 | C++ |
B1037 | 在霍格沃茨找零钱 | 20 | C++ |
A1019 | General Palindromic Number | 20 | C++ |
A1027 | Colors in Mars | 20 | C++ |
A1058 | A+B in Hogwarts | 20 | C++ |
1.5字符串处理
Title | 题目 | 分值 | 参考代码 |
B1006 | 换个格式输出整数 | 15 | C++ |
B1021 | 个位数统计 | 15 | C++ |
B1031 | 查验身份证 | 15 | C++ |
B1002 | 写出这个数 | 20 | C++ |
B1009 | 说反话 | 20 | C++ |
福尔摩斯的约会 | 20 | C++ | |
科学计数法 | 20 | C++ | |
B1048 | 数字加密 | 20 | C++ |
A1001 | A+B Format | 20 | C++ |
A1005 | Spell It Right | 20 | C++ |
A1035 | Password | 20 | C++ |
A1077 | Kuchiguse | 20 | C++ |
A1082 | Read Number in Chinese | 25 | C++ |
2.算法初步
2.1排序
Title | 题目 | 分值 | 参考代码 |
德才论 | 25 | C++ | |
A1012 | The Best Rank | 25 | C++ |
A1016 | Phone Bills | 25 | C++ |
A1025 | PAT Ranking | 25 | C++ |
A1028 | List Sorting | 25 | C++ |
A1055 | The World’s Richest | 25 | C++ |
A1075 | PAT Judge | 25 | C++ |
A1083 | List Grades | 25 | C++ |
A1080 | Graduate Admission | 30 | C++ |
A1095 | Cars on Campus | 30 | C++ |
2.2散列
Title | 题目 | 分值 | 参考代码 |
旧键盘 | 20 | C++ | |
B1033 | 旧键盘打字 | 20 | C++ |
B1038 | 统计同成绩学生 | 20 | C++ |
到底买不买 | 20 | C++ | |
B1042 | 字符统计 | 20 | C++ |
B1043 | 输出PATest | 20 | C++ |
B1047 | 编程团体赛 | 20 | C++ |
A1041 | Be Unique | 20 | C++ |
A1050 | String Subtraction | 20 | C++ |
B1005 | 继续(3n+1)猜想 | 25 | C++ |
A1048 | Find Coins | 25 | C++ |
2.3贪心
Title | 题目 | 分值 | 参考代码 |
B1023 | 组个最小数 | 20 | C++ |
月饼 | 25 | C++ | |
A1033 | To Fill or Not to Fill | 25 | C++ |
A1037 | Magic Coupon | 25 | C++ |
A1067 | Sort with Swap(0, i) | 25 | C++ |
A1038 | Recover the Smallest Number | 30 | C++ |
2.4二分
Title | 题目 | 分值 | 参考代码 |
完美数列 | 25 | C++ | |
A1010 | Radix | 25 | C++ |
A1044 | Shopping in Mars | 25 | C++ |
A1048 | Find Coins | 25 | C++ |
2.5two pointers
Title | 题目 | 分值 | 参考代码 |
完美数列 | 25 | C++ | |
Insert or Merge | 25 | C++ | |
A1029 | Median | 25 | C++ |
A1048 | Find Coins | 25 | C++ |
A1044 | Shopping in Mars | 25 | C++ |
2.6其他技巧与算法
Title | 题目 | 分值 | 参考代码 |
有几个PAT | 25 | C++ | |
快速排序 | 25 | C++ | |
B1008 | 数组元素循环右移问题 | 20 | C++ |
3.数学问题
3.1简单数学
Title | 题目 | 分值 | 参考代码 |
B1003 | 我要通过! | 20 | C++ |
数字黑洞 | 20 | C++ | |
数列的片段和 | 20 | C++ | |
A1008 | Elevator | 20 | C++ |
A1049 | Counting Ones | 30 | C++ |
3.2最大公约数与最小公倍数
Title | 题目 | 分值 | 参考代码 |
B1008 | 数组元素循环右移问题 | 20 | C++ |
3.3分数的四则运算
Title | 题目 | 分值 | 参考代码 |
A1081 | Rational Sum | 20 | C++ |
有理数四则运算 | 20 | C++ |
3.4素数
Title | 题目 | 分值 | 参考代码 |
B1007 | 素数对猜想 | 20 | C++ |
B1013 | 数素数 | 20 | C++ |
A1015 | Reversible Primes | 20 | C++ |
A1078 | Hashing | 25 | C++ |
3.5质因子分解
Title | 题目 | 分值 | 参考代码 |
A1096 | Consecutive Factors | 20 | C++ |
A1059 | Prime Factors | 25 | C++ |
3.6大整数运算
Title | 题目 | 分值 | 参考代码 |
B1017 | A除以B | 20 | C++ |
A1023 | Have Fun with Numbers | 20 | C++ |
A1024 | Palindromic Number | 25 | C++ |
4.C++标准模板库STL的使用
4.1vector
Title | 题目 | 分值 | 参考代码 |
A1039 | Course List for Student | 25 | C++ |
A1047 | Student List for Course | 25 | C++ |
4.2set
Title | 题目 | 分值 | 参考代码 |
A1063 | Set Similarity | 25 | C++ |
4.3string
Title | 题目 | 分值 | 参考代码 |
A1060 | Are They Equal | 25 | C++ |
4.4map
Title | 题目 | 分值 | 参考代码 |
火星数字 | 20 | C++ | |
A1054 | The Dominant Color | 20 | C++ |
A1071 | Speech Patterns | 25 | C++ |
A1022 | Digital Library | 30 | C++ |
5.数据结构
5.1栈和队列
Title | 题目 | 分值 | 参考代码 |
A1051 | Pop Sequence | 25 | C++ |
A1056 | Mice and Rice | 25 | C++ |
5.2链表处理
Title | 题目 | 分值 | 参考代码 |
反转链表 | 25 | C++ | |
A1032 | Sharing | 25 | C++ |
A1052 | Linked List Sorting | 25 | C++ |
A1097 | Deduplication on a Linked List | 25 | C++ |
6.两个搜索算法
6.1深度优先搜索(DFS)
Title | 题目 | 分值 | 参考代码 |
A1103 | Integer Factorization | 30 | C++ |
6.2广度优先搜索(BFS)
Title | 题目 | 分值 | 参考代码 |
A1091 | Acute Stroke | 30 | C++ |
7.树的相关算法
7.1二叉树的遍历
Title | 题目 | 分值 | 参考代码 |
A1020 | Tree Traversals | 25 | C++ |
A1086 | Tree Traversals Again | 25 | C++ |
A1102 | Invert a Binary Tree | 25 | C++ |
7.2树的遍历
Title | 题目 | 分值 | 参考代码 |
A1079 | Total Sales of Supply Chain | 25 | C++ |
A1090 | Highest Price in Supply Chain | 25 | C++ |
A1094 | The Largest Generation | 25 | C++ |
A1106 | Lowest Price in Supply Chain | 25 | C++ |
A1004 | Counting Leaves | 30 | C++ |
A1053 | Path of Equal Weight | 30 | C++ |
7.4二叉查找树
Title | 题目 | 分值 | 参考代码 |
A1043 | Is It a Binary Search Tree | 25 | C++ |
A1064 | Complete Binary Search Tree | 30 | C++ |
A1099 | Build A Binary Search Tree | 30 | C++ |
7.5平衡二叉树
Title | 题目 | 分值 | 参考代码 |
A1066 | Root of AVL Tree | 25 | C++ |
7.6并查集和堆
Title | 题目 | 分值 | 参考代码 |
A1107 | Social Clusters | 30 | C++ |
A1013 | Battle Over Cities | 25 | C++ |
A1098 | Insertion or Heap Sort | 25 | C++ |
8.图的相关算法
8.1图的遍历
Title | 题目 | 分值 | 参考代码 |
A1013 | Battle Over Cities | 25 | C++ |
A1021 | Deepest Root | 25 | C++ |
A1034 | Head of a Gang | 30 | C++ |
A1076 | Forwards on Weibo | 30 | C++ |
8.2最短路径
Title | 题目 | 分值 | 参考代码 |
A1003 | Emergency | 25 | C++ |
A1018 | Public Bike Management | 30 | C++ |
A1030 | Travel Plan | 30 | C++ |
A1072 | Gas Station | 30 | C++ |
A1087 | All Roads Lead to Rome | 30 | C++ |
9.动态规划
9.1子序列问题
Title | 题目 | 分值 | 参考代码 |
A1007 | Maximum Subsequence Sum | 25 | C++ |
A1045 | Favorite Color Stripe | 30 | C++ |
A1040 | Longest Symmetric String | 25 | C++ |
9.2背包问题
Title | 题目 | 分值 | 参考代码 |
A1068 | Find More Coins | 30 | C++ |
10.扩展
10.1分块思想和树状数组
Title | 题目 | 分值 | 参考代码 |
A1057 | Stack | 30 | C++ |
10.2快乐模拟
Title | 题目 | 分值 | 参考代码 |
螺旋矩阵 | 25 | C++ | |
A1017 | Queueing at Bank | 25 | C++ |
A1014 | Waiting in Line | 30 | C++ |
A1026 | Table Tennis | 30 | C++ |
11.总结
总结 | 描述 |
问题篇 | 回答PAT或OJ平台常见的问题 |
技巧篇 | 记录PAT或OJ平台常见的技巧 |
STL库 | 总结STL库的常见模板和函数 |