自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

harmony的专栏

浙大 · 本科 · 树莓 · 小清新 · 文艺 · 码农 · 宅 · 一枚

  • 博客(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 1535 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 代码

浙江大学PAT OJ(pat.zju.edu.cn)乙级(中文)1001-1025 题目AC代码。 本人纯手打,原创。

2014-03-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除