- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 【数据结构与算法分析】复习笔记(1)
目前为止,PAT初级题目和题解已经全部发完了。 鼓掌!撒花! 初级题目几乎不需要用到复杂的数据结构,只需要基础的编程知识和简单的逻辑就可以完成。按姥姥的话说,“排序就是最复杂的了”(原话不记得了,不过是这个意思)。为了完成PAT的填坑大业,为了在9月份的PAT甲级比赛中不被题虐名列前茅并被优秀公司免试录取出任CEO迎娶白富美走上人生巅峰,果断开始走上备考甲级的不归之路! 甲级涉
2014-03-17 20:14:13 1812
原创 PAT Advanced Level 1073. Scientific Notation (20)
【来源】1073. Scientific Notation (20)【友情链接】PAT Basic Level 1024. 科学计数法(20)
2014-03-15 01:17:37 789
原创 PAT Advanced Level 1074. Reversing Linked List (25)
【来源】1074. Reversing Linked List (25)【友情链接】PAT Basic Level 1025. 反转链表 (25)
2014-03-15 01:13:16 798
原创 PAT Advanced Level 1075. PAT Judge (25)
【来源】1075. PAT Judge (25)【分析】本题模拟的是PAT的评分和排名系统,有一些细节需要注意。【代码】#include #include #include #include using namespace std;struct User{ int id; int scores[5]; int totalscore;
2014-03-15 00:10:12 1060
原创 PAT Advanced Level 1076. Forwards on Weibo (30)
【来源】1076. Forwards on Weibo (30)【分析】本题给出微博用户的关注情况,在假定某一用户的粉丝看到某条微博一定会转发的情况下,求可能被转发的次数。抽象一下就是一个限定了层数的广度优先搜索(BFS)。基本的数据结构是以vector为元素类型的一个vector。该vector的index和用户id相关,index所对应的元素为此id的粉丝们。给定发
2014-03-15 00:04:24 1536 3
原创 PAT Basic Level 1001. 害死人不偿命的(3n+1)猜想 (15)
【来源】1001. 害死人不偿命的(3n+1)猜想 (15)【分析】while循环实现即可。【代码】#include using namespace std;int main(){ int n; cin >> n; int steps = 0; int m = n; while (m != 1) { if (m % 2 == 0) { m
2014-03-13 15:27:44 693
原创 PAT Basic Level 1002. 写出这个数 (20)
【来源】1002. 写出这个数 (20)【分析】先计算各位数字之和,然后分情况输出即可。【代码】#include #include using namespace std;int main(){ string s; cin >> s; int sum = 0; for (int i = 0; i < s.size(); ++i){ int digit
2014-03-13 15:25:06 803
原创 PAT Basic Level 1003. 我要通过!(20)
【来源】1003. 我要通过!(20)【分析】为了通过得到可爱的红色的答案正确需要满足一定的条件,具体判断时思路如下:若有除了"PAT"以外的字符出现,答案错误;若字符串中有"PAT"字符子串,则看"PAT"前后是否相等且均为空串或仅由'A'构成的字符串,如果是,答案正确,否则,答案错误;若字符串中有'P'和'T'且'P'在'T'前面,那么整个字符串被分为3部分:头、中
2014-03-13 15:21:29 910
原创 PAT Basic Level 1004. 成绩排名 (20)
【来源】1004. 成绩排名 (20)【分析】建立student结构,把student数据存入vector,利用STL 的sort函数排序后,依次输出即可。【代码】#include #include #include #include using namespace std;struct student{ string name; string
2014-03-13 15:01:22 759
原创 PAT Basic Level 1005. 继续(3n+1)猜想 (25)
【来源】1005. 继续(3n+1)猜想 (25)【分析】这道题需要费些脑筋。博主的思路如下:题目要求按照从大到小的顺序输出关键字。首先假定所有数都为“关键数”。然后依次遍历整个数组。若该数为“关键数”,则计算从这个数经过(3n+1)猜想到1的过程中得到的数,若某个数之前被判定为“关键数”,则取消这个数的“关键书”属性。遍历完数组之后,真正的“关键数”便会被筛选出来
2014-03-13 14:56:54 790
原创 PAT Basic Level 1006. 换个格式输出整数 (15)
【来源】1006. 换个格式输出整数 (15)【分析】这道题题意很容易理解。处理的时候考虑到给出的整数不超过1000,因此分1、2、3位数分别处理。【代码】#include using namespace std;int main(){ int n; cin >> n; if (n >= 100){ int bai = n
2014-03-13 14:42:01 698
原创 PAT Basic Level 1007. 素数对猜想 (20)
【来源】1007. 素数对猜想 (20)【分析】从2到N遍历所有的相差为2的整数对,判断是否为素数对,计数并输出即可。【代码】#include #include using namespace std;bool isPrime(int n){ if (n < 2){ return false; } if (n == 2){
2014-03-13 14:38:37 754
原创 PAT Basic Level 1008. 数组元素循环右移问题 (20)
【来源】1008. 数组元素循环右移问题 (20)【分析】本题要求在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置。博主刚开始的思路是直接模拟数组循环移动的过程,然后输出最终状态的数组。后来发现过程非常繁琐,经好友提醒,恍然大悟,原来只需要控制输出的东西就行了,管它数组本身有没有真的循环移动了。因此思路如下:移动的位置若为N的整数倍,数组不会发
2014-03-13 14:32:49 823
原创 PAT Basic Level 1009. 说反话(20)
【来源】1009. 说反话(20)【分析】getline函数获取整个句子,依此建立stringstream,获取每个单词。每个单词为一个string对象,放到vector中。逆序输出即可。【代码】#include #include #include #include using namespace std;int main(){ vector sent
2014-03-13 14:20:37 1375
原创 PAT Basic Level 1010. 一元多项式求导(25)
【来源】1010. 一元多项式求导【分析】模拟数学上多项式求导的过程。需要注意以下几点:输入时没有控制输入结束的标志,因此用getline获取所有输入,然后建立stringstream对象,从中获取数据;输入为常数项是,倒数为0,输出“0 0”即可。【源码】#include #include #include #include using nam
2014-03-13 14:15:02 991
原创 PAT Basic Level 1011. A+B和C(15)
【来源】1011. A+B和C(15)【分析】本题看似简单,需要注意数据的范围为[-231, 231],int类型有可能导致溢出。long long int为64位整数,满足题目要求。【源码】#include using namespace std;int main(){ int n; cin >> n; for (int i = 0;
2014-03-12 19:28:17 1079
原创 PAT Basic Level 1012. 数字分类(20)
【来源】1012. 数字分类(20)【分析】按题目要求分别计算相应的值即可。要足够细心才能通过所有测试点。【源码】#include #include #include using namespace std;int main(){ int n; cin >> n; int* nums = new int[n]; for (int i
2014-03-12 19:13:21 874
原创 PAT Basic Level 1013. 数素数(20)
【来源】1013. 数素数(20)【分析】本题要求输出第M个至第N个素数(0思路为先估计第10000个素数的数值P,然后遍历从2到P的数,如果是素数,则计数。如果计数在M和N之间,则输出该数。同时使用一个单独的计数变量统计输出的素数的个数,每10个输出换行。【源码】#include #include using namespace std;bool isPrim
2014-03-12 19:07:26 878
原创 PAT Basic Level 1014. 福尔摩斯的约会(20)
【来源】1014. 福尔摩斯的约会(20)【分析】本题为字符串处理题。根据题意,比较前两个字符串可以得到星期和小时数,比较后面两个字符串可以得到分钟数。需要注意一下几点:理解题意要正确。比如题目中出现的“第2对相同的字符”在程序中不应当直接查找两个字符串中第二对相同的字符,而应当理解为“0-9”、“A-Z”这些对解析有意义的字符。输出时不足两位的小时、分钟要用0补足
2014-03-12 18:55:14 886
原创 PAT Basic Level 1015. 德才论(25)
【来源】1015. 德才论(25)【分析】此题本质上是一个排序问题。使用C++ STL中的sort函数并根据题意自定义compare函数即可。在输入的时候将所有考生分成四类:“才德全尽”、“德胜才”、“才德兼亡,但德胜才”,以及剩下的达到及格线的考生。然后各自排序,依次输出即可。需注意使用cin、cout可能会超时。【源码】#include #include #
2014-03-12 18:42:11 1153
原创 PAT Basic Level 1016. 部分A+B (15)
【来源】1016. 部分A+B (15)【分析】【源码】#include #include using namespace std;int main(){ string a, b; char da, db; cin >> a >> da >> b >> db; int numa = 0; int basea = da
2014-03-12 18:33:14 643
原创 PAT Basic Level 1017. A除以B(20)
【来源】A除以B(20)【分析】模拟实际除法的过程即可。【源码】#include #include using namespace std;int main(){ string a; int b; cin >> a >> b; string q = ""; int r = 0; for (int i = 0
2014-03-12 16:48:22 568
原创 PAT Basic Level 1018. 锤子剪刀布(20)
【来源】1018. 锤子剪刀布(20)【分析】解此题时,要求在记录甲乙双方输赢次数的同时,记录下甲乙用三种手势赢的次数。然后比较之后输出。学到的新知识为数组批量初始化为0的快捷方法:int array[10] = {0}【源码】#include using namespace std;int main(){ int n; cin >> n;
2014-03-12 16:39:53 924
原创 PAT Basic Level 1019. 数字黑洞(20)
【来源】1019.数字黑洞(20)【分析】按照题意直接码代码即可。需要注意两点:输出数的时候需要注意不足四位数要用0补齐;注意输入为6174的情况。【源码】#include #include #include using namespace std;string tostring(int n){ string s; if (n < 1
2014-03-12 16:26:09 1083
原创 PAT Basic Level 1020. 月饼(25)
【来源】1020. 月饼(25)【分析】为了获取最大的利润,首先把月饼按照单价从高到低排序,然后依次购买,到满足需求为止。【源码】#include #include #include #include using namespace std;struct mooncake{ double stock; double money;};bo
2014-03-12 16:03:18 1743
原创 PAT Basic Level 1025. 反转链表(25)
【来源】1025. 翻转链表(25)【分析】题目给出一系列链表的节点,要求将链表中每K个节点翻转。最后不到K个元素不反转。和本题类似的题目有:Advanced Level 中的 1052. Linked List Sorting (25),处理的思路是一样的。对这种地址空间较小的题目,通用的做法是开一个大一点的Vector,然后把Vector的index映射为节点的地址。这样处
2014-03-11 23:10:11 2508
原创 PAT Basic Level 1024. 科学计数法(20)
【来源】1024. 科学计数法【分析】此题给出用科学技术法表示的数,要求输出正常表示的数。为字符串处理题。大致解题思路为从字符串中分别解析出基数的符号、基数的大小、指数的大小、指数的符号,然后以此得到输出。此类题目需要耐心和细心,最好先自己设计一系列的测试样例,然后分情况解析字符串即可。需注意整数输出的时候末尾没有小数点。类似的题目可参考 Advanced level 10
2014-03-11 22:49:09 1822 2
原创 PAT Basic Level 1023. 组个最小数(20)
【来源】1023. 组个最小数(20)【分析】本题给出0-9各个数字的个数,要组成一个最小数。算法很简单,要注意的是首位不能为零,因此需要先找出最小的非零数字作为首位,然后从小到大排列数字。【代码】#include using namespace std;int main(){ int nums[10]; for(int i = 0; i < 10; ++i
2014-03-11 22:37:42 874
原创 PAT Basic Level 1022. D进制的A+B (20)
【分析】此题考察进制转换的相关知识。属于简单题。【代码】#include #include using namespace std;int main(){ int a, b; cin >> a >> b; int d; cin >> d; int c = a+b; if(c == 0){ cout << 0 << endl; } el
2014-03-11 22:26:02 1043
原创 PAT Basic Level 1021. 个位数统计(15)
【分析】考察简单的字符串处理。【代码】#include #include using namespace std;int main(){ string s; cin >> s; int freq[10]; for(int i= 0; i < 10; ++i){ freq[i] = 0; } for(int i = 0; i < s.size();
2014-03-11 22:03:05 814 2
原创 博主很懒,这是博主的第一篇文章
今天是2014年3月11日。天气晴好。这是我在CSDN上发的第一篇文章。 为什么要开通这个博客呢?因为室友兼基友说,很厉害的大牛都会自己开博客的。我是个菜鸟,但是是个立志成为大牛的菜鸟,为了向大牛们标标齐,就权把此地作为走向成为码农 的不归路的一个足迹的记录吧。 另外,俄国文学家契诃夫曾经说过,“好记性不如烂键盘”嘛,就用我的小黑的无敌手感的键盘,把各种课程中学到的,或者是自学的技术片
2014-03-11 21:41:08 964
ZJU PAT Basic Level 乙级1001-1025 代码
2014-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人