- 博客(190)
- 收藏
- 关注
原创 专题三:链表
一、基础知识什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点是由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的类型单链表双链表循环链表链表的存储方式了解完链表的类型,再来说一说链表在内存中的存储方式。数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的。链表是通过指针域的指针链接在内存中各个节点。所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,
2021-05-08 13:37:58
173
原创 专题二:字符串
一、字符串的反转1、可以使用C++的库函数reversereverse函数功能是逆序(或反转),多用于字符串、数组、容器。头文件是#include reverse函数用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数无返回值eg.string str="hello world , hi";reverse(str.begin(),str.end());//str结果为 ih , dlrow ollehvector<int
2021-05-08 11:25:18
265
原创 专题一:数组
一、基础1、数组是存放在连续内存空间上的相同类型数据的集合。2、需要两点注意的是数组下标都是从0开始的。数组内存空间的地址是连续的正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。3、如果使用C++的话,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。数组的元素是不能删的,只能覆盖。二、二分法前提:数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,
2021-05-07 11:38:37
193
原创 KY68 子串计算
题目描述给出一个01字符串(长度不超过100),求其每一个子串出现的次数。输入描述:输入包含多行,每行一个字符串。输出描述:对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。示例1输入10101输出0 201 21 310 2101 2思路:借助map,分别取子串,找这个子串是否在map中,如果在,那个子串在map 中的对应加一,如果没有,那个子串在map 中的对应为1。代码:#include<iostream>#i
2021-05-05 13:40:52
409
原创 KY37 小白鼠排队
题目描述N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。输入描述:多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。注
2021-05-05 13:27:44
190
原创 KY168 字符串内排序
题目描述输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。本题知识点:排序 字符串输入描述:测试数据有多组,输入字符串。输出描述:对于每组输入,输出处理后的结果。示例1输入bacd输出abcd思路:直接使用sort进行排序即可。代码:#include<string>#include<algorithm>#include<iostream>using namespace std;int main() {
2021-05-05 12:19:54
173
原创 KY115 后缀子串排序
题目描述对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain本题知识点:排序 字符串 后缀数组输入描述:每个案例为一行字符串。输出描述:将子串排序输出示例1输入grain输出aingraininnrain思路:将其分别取子串保存到vector < string > 中,在进行排序,最后再将排序之后的结果输出。代码:#define
2021-05-05 12:02:22
199
原创 python学习(二)
分支和循环的应用# 例子1:寻找水仙花数。# 说明:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如: [公式] 。a=int(input(""))if ((a//100)**3+(a%100//10)**3+(a%10)**3)==a: print("True")else: print("False")# 1、注意幂乘的运算符是**# 2、注意//才行,/的结果是小数# 例子二:正整数的反
2021-04-11 17:39:07
1797
转载 PAT甲级分类
PAT甲级题目分类水题 1136、1139、1143、1148字符串处理 1001、1005、1035、1061、1073、1077、1082、 1108、1140、1152模拟 1002、1009、1017、1026、1042、1046、1065、 1105查找元素 1006、1011、1036动态规划 1007、1040、1045、1068二分法 1010、1044、10
2021-04-11 16:03:18
219
原创 算法笔记(三)
图形输出注意第二种:定义一个二维字符数组,通过规律填充,然后输出整个二维数组日期#include<iostream>using namespace std;int month[13][2] = { {0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30} , {31,31},{31,31},{30,30} ,{31,31},{30,30} , {31,31} };//判断是否为闰年bool isLeap(int ye
2021-04-11 15:55:04
103
原创 1025 PAT Ranking
1025 PAT Ranking题目:Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhejiang University. Each test is supposed to run simultaneously in several places, and the ranklists will be merged immediately after the
2021-04-11 15:31:41
68
原创 算法笔记(二)
选择结构不需要加大括号循环语句注意do……while的while的末尾是有分号的数组数组大小必须是整型变量冒泡排序本质在于交换void BubbleSort(int arr[], int n){ for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { int tem
2021-04-09 16:26:15
172
原创 python学习(一)
1、Python中有两种形式的注释:单行注释:以#和空格开头,可以注释掉从#开始后面一整行的内容。多行注释:三个引号开头,三个引号结尾,通常用于添加多行说明性内容。2、一些计算机常识在开始系统的学习编程之前,我们先来科普一些计算机的基础知识。计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们常说的中央处理器,它的功能是执行各种运算和控制指令。刚才我们提到过程序是指令的集合,写程序就是将一系列的指令按照某种方式组织到一起,然后
2021-04-08 19:21:14
259
原创 算法笔记(一)
一、1、C的输入输出语句比C++的要快很多2、3、方法:分专题练习4、二、C/C++快速入门2.1 基础1、对于让C++使用者觉得麻烦的scanf函数和printf函数,虽然必须承认cin和 cout可以不指定输入输出格式比较方便,但是cin和 cout消耗的时间比 scanf和 printf多得多,很多题目可能输入还没结束就超时了。当然,可以在某次使用cin和 cout超时,改成scanf和 printf后通过的时候,痛下决心以后使用scanf和 printf。顺便指出,请不要同时在
2021-04-08 17:52:09
158
原创 1095 解码PAT准考证
1095 解码PAT准考证题目:PAT 准考证号由 4 部分组成:第 1 位是级别,即 T 代表顶级;A 代表甲级;B 代表乙级;第 2~4 位是考场编号,范围从 101 到 999;第 5~10 位是考试日期,格式为年、月、日顺次各占 2 位;最后 11~13 位是考生编号,范围从 000 到 999。现给定一系列考生的准考证号和他们的成绩,请你按照要求输出各种统计信息。输入格式:输入首先在一行中给出两个正整数 N(≤10^4)和 M(≤100),分别为考生人数和统计要求的个数。接下
2021-03-31 13:38:03
121
原创 1094 谷歌的招聘
1094 谷歌的招聘题目:2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字。能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。自然常数 e 是一个著名的超越数,前面若干位写出来是这样的:e = 2.71828182845904523536028747135266249775724709369995957
2021-03-31 12:45:51
194
原创 1093 字符串A+B
1093 字符串A+B题目:给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集。要求先输出 A,再输出 B,但重复的字符必须被剔除。输入格式:输入在两行中分别给出 A 和 B,均为长度不超过 10^6 的、由可见 ASCII 字符 (即码值为32~126)和空格组成的、由回车标识结束的非空字符串。输出格式:在一行中输出题面要求的 A 和 B 的和。输入样例:This is a sample testto show you_How it works输出样例:Thi
2021-03-31 12:20:21
218
原创 1092 最好吃的月饼
1092 最好吃的月饼题目:月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种。若想评比出一种“最好吃”的月饼,那势必在吃货界引发一场腥风血雨…… 在这里我们用数字说话,给出全国各地各种月饼的销量,要求你从中找出销量冠军,认定为最好吃的月饼。输入格式:输入首先给出两个正整数 N(≤1000)和 M(≤100),分别为月饼的种类数(于是默认月饼种类从 1 到 N 编号)和参与统计的城市数量。接下来 M 行,每行给出 N 个非负整数(均不超过 1 百万),其中第 i 个整数为第 i 种
2021-03-31 10:28:47
64
原创 1085 PAT单位排行
1085 PAT单位排行题目:每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。输入格式:输入第一行给出一个正整数 N(≤10^5 ),即考生人数。随后 N 行,每行按下列格式给出一个考生的信息:准考证号 得分 学校其中准考证号是由 6 个字符组成的字符串,其首字母表示考试的级别:B代表乙级,A代表甲级,T代表顶级;得分是 [0, 100] 区间内的整数;学校是由不超过 6 个英文字母组成的单位码(大小写无关)。注意:题目保证每个考生的准考证号是不同的
2021-03-30 15:17:55
78
1
原创 1088 三人行
1088 三人行题目:子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是 2 位正整数;把甲的能力值的 2 个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的 X 倍;乙的能力值是丙的 Y 倍。请你指出谁比你强应“从之”,谁比你弱应“改之”。输入格式:输入在一行中给出三个数,依次为:M(你自己的能力值)、X 和 Y。三个数字均为不超过 1000 的正整数。输出格式:在一行中首先输出甲的能力值,随后依次输出甲、乙、丙三人
2021-03-30 14:38:43
80
原创 1081 检查密码
1081 检查密码题目:本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。输入格式:输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。输出格式:对每个用户的密码,在一行中输出系统反馈信息,分以下5种:如果密码合法,输出Your password is wan mei.;如果密码太短,不
2021-03-30 14:18:46
116
原创 1090 危险品装箱
1090 危险品装箱题目:集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里。比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸。本题给定一张不相容物品的清单,需要你检查每一张集装箱货品清单,判断它们是否能装在同一只箱子里。输入格式:输入第一行给出两个正整数:N (≤10^4) 是成对的不相容物品的对数;M (≤100) 是集装箱货品清单的单数。随后数据分两大块给出。第一块有 N 行,每行给出一对不相容的物品。第二块有 M 行,每行给出一箱货物的清单,格式如下:K G[1
2021-03-30 13:59:38
82
原创 1091 N-自守数
1091 N-自守数题目:如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”。例如 3×92^2=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守数。本题就请你编写程序判断一个给定的数字是否关于某个 N 是 N-自守数。输入格式:输入在第一行中给出正整数 M(≤20),随后一行给出 M 个待检测的、不超过 1000 的正整数。输出格式:对每个需要检测的数字,如果它是 N-自守数就在一行中输出最小的 N 和 NK^2的
2021-03-30 13:31:28
226
转载 1089 狼人杀-简单版
1089 狼人杀-简单版题目:以下文字摘自《灵机一动·好玩的数学》:“狼人杀”游戏分为狼人、好人两大阵营。在一局“狼人杀”游戏中,1 号玩家说:“2 号是狼人”,2 号玩家说:“3 号是好人”,3 号玩家说:“4 号是狼人”,4 号玩家说:“5 号是好人”,5 号玩家说:“4 号是好人”。已知这 5 名玩家中有 2 人扮演狼人角色,有 2 人说的不是实话,有狼人撒谎但并不是所有狼人都在撒谎。扮演狼人角色的是哪两号玩家?本题是这个问题的升级版:已知 N 名玩家中有 2 人扮演狼人角色,有 2 人说的不是
2021-03-29 15:34:09
282
原创 1087 有多少不同的值
1087 有多少不同的值题目:当自然数 n 依次取 1、2、3、……、N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x 的最大自然数,即 x 的整数部分。)输入格式:输入给出一个正整数 N(2≤N≤10^4 )。输出格式:在一行中输出题面中算式取到的不同值的个数。输入样例:2017输出样例:1480代码:#include<iostream>#define MAX 1000000using names
2021-03-29 14:25:15
103
原创 1086 就不告诉你
1086 就不告诉你题目:做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。输入格式:输入在第一行给出两个不超过 1000 的正整数 A 和 B,其间以空格分隔。输出格式:在一行中倒着输出 A 和 B 的乘积。输入样例:5 7输出样例:53代码:#include<iostream>using namespace std;int main() { long
2021-03-29 14:08:19
88
原创 python课知识(五)
一、文件1、文件操作文件操作完成之后,一定要关闭文件对象二、Numpyndarray中的所有数据类型必须相同多维数组及创建
2021-03-29 11:18:42
82
原创 1084 外观数列
1084 外观数列题目:外观数列是指具有以下特点的整数序列:d, d1, d111, d113, d11231, d112213111, …它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对应 d1)和 1 个 1(对应 11),所以第 3 项就是 d111。又比如第 4 项是 d113,其描述就是 1 个 d,2 个 1,1 个 3,所以下一项就是 d11231。当然这个定义对 d =
2021-03-27 19:21:26
191
原创 1083 是否存在相等的差
1083 是否存在相等的差题目:给定 N 张卡片,正面分别写上 1、2、……、N,然后全部翻面,洗牌,在背面分别写上 1、2、……、N。将每张牌的正反两面数字相减(大减小),得到 N 个非负差值,其中是否存在相等的差?输入格式:输入第一行给出一个正整数 N(2 ≤ N ≤ 10 000),随后一行给出 1 到 N 的一个洗牌后的排列,第 i 个数表示正面写了 i 的那张卡片背面的数字。输出格式:按照“差值 重复次数”的格式从大到小输出重复的差值及其重复的次数,每行输出一个结果。输入样例:8
2021-03-27 18:47:47
234
1
原创 1082 射击比赛
1082 射击比赛题目:本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。输入格式:输入在第一行中给出一个正整数 N(≤ 10 000)。随后 N 行,每行按下列格式给出:ID x y其中 ID 是运动员的编号(由 4 位数字组成);x 和 y 是其打出的弹洞的平面坐标(x,y),均为整数,且 0 ≤ |x|, |y| ≤ 100。题目保证每个运动员的
2021-03-27 18:36:56
84
原创 1080 MOOC期终成绩
1080 MOOC期终成绩题目:对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分(满分100)。总评成绩的计算公式为 G=(Gmid−term ×40%+Gfinal ×60%),如果 Gmid−term >Gfinal ;否则总评 G 就是 Gfinal 。这里 Gmid−term 和 Gfinal 分别为学生的期中和期末
2021-03-27 18:27:25
111
原创 1079 延迟的回文数
1079 延迟的回文数题目:给定一个 k+1 位的正整数 N,写成 ak ⋯a1 a0的形式,其中对所有 i 有 0≤ai <10 且ak >0。N 被称为一个回文数,当且仅当对所有 i 有 ai=ak−i 。零也被定义为一个回文数。非回文数也可以通过一系列操作变出回文数。首先将该数字逆转,再将逆转数与该数相加,如果和还不是一个回文数,就重复这个逆转再相加的操作,直到一个回文数出现。如果一个非回文数可以变出回文数,就称这个数为延迟的回文数。(定义翻译自 http
2021-03-27 17:49:46
83
转载 1078 字符串压缩与解压
1078 字符串压缩与解压题目:文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba。解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc。本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。输入格式:输入第一行给出一个字符,如果是 C 就表示
2021-03-27 17:23:44
140
转载 1073 多选题常见计分法
1073 多选题常见计分法题目:批改多选题是比较麻烦的事情,有很多不同的计分方法。有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到 50% 分数;如果考生选择了任何一个错误的选项,则不能得分。本题就请你写个程序帮助老师批改多选题,并且指出哪道题的哪个选项错的人最多。输入格式:输入在第一行给出两个正整数 N(≤1000)和 M(≤100),分别是学生人数和多选题的个数。随后 M 行,每行顺次给出一道题的满分值(不超过 5 的正整数)、选项个数(不少于 2 且不超过
2021-03-26 11:46:55
190
原创 1074 宇宙无敌加法器
1074 宇宙无敌加法器题目:地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。每一位的进制 d 或者是 0(表示十进制)、或者是 [2,9] 区间内的整数。理论上这个进制表应该包含无穷多位数字,但从实际应用出发,PAT
2021-03-26 11:07:44
125
原创 1075 链表元素分类
1075 链表元素分类题目:给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面。但每一类内部元素的顺序是不能改变的。例如:给定链表为 18→7→-4→0→5→-6→10→11→-2,K 为 10,则输出应该为 -4→-6→-2→7→0→5→10→18→11。输入格式:每个输入包含一个测试用例。每个测试用例第 1 行给出:第 1 个结点的地址;结点总个数,即正整数N (≤10^5);以及正整数K (≤10
2021-03-26 10:28:54
154
原创 1077 互评成绩计算
1077 互评成绩计算题目:在浙大的计算机专业课中,经常有互评分组报告这个环节。一个组上台介绍自己的工作,其他组在台下为其表现评分。最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平均分记为 G1 ;老师给这个组的评分记为 G2 。该组得分为 (G1 +G2 )/2,最后结果四舍五入后保留整数分。本题就要求你写个程序帮助老师计算每个组的互评成绩。输入格式:输入第一行给出两个正整数 N(> 3)和 M,分别是分组数和满分,均不超过
2021-03-26 09:46:43
161
原创 1071 小赌怡情
1071 小赌怡情代码:#include<iostream>using namespace std;int main() { int T, K; cin >> T >> K; int i; int n1, b, t, n2; for (i = 0; i < K; i++) { cin >> n1 >> b >> t >> n2; if (t > T) { cout&l
2021-03-26 09:24:07
90
原创 1076 Wifi密码
1076 Wifi密码题目:下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码。这里简单假设每道选择题都有 4 个选项,有且只有 1 个正确答案。输入格式:输入第一行给出一个正整数 N(≤ 100),随后 N
2021-03-25 11:05:24
413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅