PAT分类解析及知识点积累
xbog
初学者
展开
-
PATB1032:挖掘机哪家强
PATB1032:挖掘机哪家强 与 B1041基本类似【思路】:很典型的 做hash[]来装score[sid], 每个学校的分数总和 做hash[]来装score[sid], 每个学校的分数总和 求出最大值 int sum[100010]; void B1032(){ int N; cin >> N; int sid, score; for (in原创 2016-09-04 19:47:51 · 458 阅读 · 0 评论 -
PATB1031:查验身份证
PATB1031:查验身份证【思路】: 输入 遍历每个字符 分类 不符合的用flag标记 通过标记输出结果 1、含有X的 2、不含有X 但是验证不通过的 都是用标记flag 3、通过标记输出结果 【知识点】 如果中途break j < N ,通过循环变量判断来实现分类 > ` for (j = 0; j < 17; j++)//遍历一个字符串完成原创 2016-09-04 20:03:10 · 435 阅读 · 0 评论 -
PATB1048:数字加密
PATB1048:数字加密【思路】: 输入 循环 判断,只需要对每个元进行一次操作即可【知识点】 杂类用hash表示 char has_z[3] = { 'J', 'Q', 'K' }; 【知识点】 对于c的字符数组可以用reverse来进行字符数组的反转,本题由于是字符到bit的操作,所以字符反转是常规思路 reverse(a, a + strlen(a)); reverse(b, b +原创 2016-09-04 20:03:47 · 346 阅读 · 0 评论 -
PATB1014:福尔摩斯的约会
PATB1014:福尔摩斯的约会【思路】: 输入 四个字符串 ,分别求其第一个满足条件的字符。用Hash输出 【知识点】 求第一个满足条件的字符用 for break及时退出循环 一个字符串中分两次不同的的遍历 来判断的不同的条件 用 i 来连接 **for (i = 0; i < size1; i++)** { if (S1[i] == S2原创 2016-09-04 20:04:13 · 409 阅读 · 0 评论 -
PATB1024:科学记数法
PATB1024:科学记数法【思路】: 输出的字符串由几部分组成 通过 i str[i] 来索引输出字符串 每部分 需要满足什么条件 才输出 常用的是 str[i] pos pos-3 表示长度 exp为字符–》转换成数字 【知识点】 每部分 需要满足什么条件 才输出 for (int i = 1; i < pos; i++)//也是分成3 部分 思考每部分原创 2016-09-04 20:04:55 · 359 阅读 · 0 评论 -
PAT B 简单思维模板
原创 2016-09-04 20:17:28 · 242 阅读 · 0 评论 -
PAT分类解析专辑说明
这个专辑主要是程序设计刚刚入门时候的做题心得与积累 目前已经完成的是入门模拟 和字符串操作 在PATB中两部分总共占有20道题,(目前总55题),基本分数为 15 ,20分 是简单题目。 后面又是将对每个题目的打上标签 ,以便于针对性练习原创 2016-09-04 20:25:48 · 269 阅读 · 0 评论 -
PATB1029: 旧键盘
PATB1029: 旧键盘【方法二】【思路】:HASH经常用来求两个集合的交 集 补集等 。去重小能手首先对目标集合中的元素进行HASH,这里需要统一大小写‘: b[i] = towupper(b[i]); 【知识点】然后在原来的集合中找 没有被HASH化的元素 输出 并HASH此字符,以实现去重,输出的时候需要判断,没有被HASH化才可以被打印 if (hash_T[a[i]]原创 2016-09-05 20:26:17 · 345 阅读 · 0 评论 -
PATB1047: 输出PATest
PATB1047: 输出PATest【思路】:设置字典为PATEST,同时设置HAsh来记录dict的次数 ,两者是一一对应的;两个数组的遍历 两个for循环即可, for (int i = 0; i < s.size(); i++) { for (int j = 0; j < 6; j++) { if (dict[j] == s原创 2016-09-05 20:28:02 · 262 阅读 · 0 评论 -
PATB1039: 到底买不买
PATB1039: 到底买不买 【经典】【思路】:在集合1中 找出其个数 字符都小的集合M,首先hash s1 记录次数 然后对照 s2如果有,就hash–;if(hash<0)则说明缺少了【参考答案】//这是一道十分典型的 在集合1中 找出其个数 字符都小的集合M //首先hash s1 记录次数 然后对照 s2如果有,就hash--;if(hash<0)则说明缺少了void B1039(){原创 2016-09-05 20:28:30 · 273 阅读 · 0 评论 -
PATB1029: 字符统计
PATB1029: 字符统计【思路】:HASH经常用来求两个集合的交 集 补集等 。去重小能手1首先对目标集合中的元素进行HASH,这里面试大小写不区分,且只需要输出小写,所以统一转换成小写isalpha(s[i])判断是字母吗 2然后对元集合进行过滤性输出 求最大值 老方法 还是设置一个maxID ,这里需要注意的是。索引需要换成char类型的输出printf("%c %d", maxId +'a原创 2016-09-05 20:27:27 · 348 阅读 · 0 评论 -
PATB1002:写出这个数
PATB1002:写出这个数【思路】: bit[index] 用hash有条件的输出 。思路和上题目基本类似【参考答案】#include <cstdio> #include <cstring> //位--》数字--》位:str[i]-'0',除基取余,bit[num++]保存,然后输出,i=[num-1,0:1],if(i>0) 打印“ ” else打印“\n” char strNum[110];原创 2016-09-04 20:02:28 · 726 阅读 · 0 评论 -
PATB1021:个位数统计
PATB1021:数 的bit[]统计【思路】: bit[index] 用hash有条件的输出【参考答案】#include <cstdio> #include <cmath> #include <cstring> //count[str[i]]++,索引也是变量,统计1个位数void tongjisuzhu(){ char str[1010]; gets(str); int len原创 2016-09-04 20:02:06 · 279 阅读 · 0 评论 -
PATB1006:换个格式输出整数
PATB1006:数字转换成bit[ ]的数组【思路】: bit[count++],获取数的每个位 数—数组,count 4 3 2 这样的数组打印需要逆序输出 【知识点】 bit[count++],获取数的每个位 数—数组,countwhile (n>0) { bit[count++] = n % 10; n /= 10; }原创 2016-09-04 20:01:07 · 239 阅读 · 0 评论 -
PAT B1016: 部分A+B
PAT分类解析及知识点总结:入门模拟【B1016: 部分A+B 】【思路】:实际上是找 数字A 中出现的位 bit 输入数字A, 循环 + if() :检索数字中含有的 Da 记录 并 计算Pa 操作: Pa=Da+Pa*10; 【知识点】 (一)通过字符串 数字 找到 bit 然后重新组成数字 for (int i = 0; i < A.length(); i原创 2016-09-04 19:26:16 · 277 阅读 · 0 评论 -
PATB1026:程序计算时间
【思路】: 四舍五入得到秒 按照格式输出 H M S 输入C2 c1,计算round(t), 小数必须是double型号的 t/3600–小时H ;(t%3600)–不满足1H剩下的秒数;(t%3600)/60–M; void calctime1(){ int c1, c2, ans; cin >> c1>>c2;原创 2016-09-04 19:31:36 · 299 阅读 · 0 评论 -
PATB1046:划拳
PATB1046:划拳【思路】:循环 + 判断 (一句话系列) 主要考察点是 分类 a2!=b2 && a1+b1=a2 满足条件 //PATB1018 按照题意进行模拟,锤子剪刀布void CJB(){ char Game[3] = {}; int yin[2] = { 0 }; int shu[2] = { 0 }; int pin = 0; int原创 2016-09-04 19:35:42 · 277 阅读 · 0 评论 -
PATB1008:数组元素右移
【思路】:分段输出即可 (一句话系列)【知识点】 数据之间用“ 空格 “表示,最后用”\n“ 技巧 for (int i=0 ;i,N ;i++){ cout << a[i] ; #count记录的是循环趟数 if(count < N){ cout<< " " } else原创 2016-09-04 19:43:35 · 307 阅读 · 0 评论 -
PATB1012:数字分类输出
PATB1012:数字分类输出【思路】: if– else–的终极运用 每个输出都要判断,所以别老想着用循环 【知识点】 注意点:输出时候需要判断,结果为空吗?如果为空,输出‘N’ //准备输出 if (count[0]==0){ printf("N "); }else{ printf("%d ", ans[0]); } 注意点原创 2016-09-04 19:45:23 · 344 阅读 · 0 评论 -
PATB1018:石头剪刀布
PATB1018:石头剪刀布【思路】: 循环–判断条件满足就 记录 记录: 赢 平 输 ; 运用Hash映射求出赢得次数最多的手势 :实质是求出最大值得索引映射 【知识点】 求出一个数组的最大值得索引映射 char ykn[3] = { 'B', 'C', 'J' }; int max0 = 0; for (int i = 0; i < 3; i++) {原创 2016-09-04 19:46:33 · 489 阅读 · 0 评论 -
PATB1041:考试座位号
PATB1041:考试座位号【思路】:很典型的 做hash[]来装score[sid], 每个学校的分数总和 做hash[]来装score[sid], 每个学校的分数总和 求出最大值 【知识点】 用Hash[]的重要初始化过程 根据索引取找到值 其他的无关紧要的用结构添加一个属性就好了 index —> Seat[index] struct Stu{原创 2016-09-04 19:50:52 · 456 阅读 · 0 评论 -
PATB1004:成绩排名
PATB1004:成绩排名 简单结构体的 + 数组 求最值【参考答案1】//B1004成绩排名; 常规思路 与节省空间思路 struct STU1{ string name; string ID; int score;}stu1[1010];void B1004(){ int N; cin >> N; int maxId = 0, minId=0;原创 2016-09-04 19:53:46 · 473 阅读 · 0 评论 -
PATB1028:人口普查
PATB1028:人口普查 【经典】 + 结构体的多级排序 与求最值 其实可以考虑 sort【知识点】 结构体的多级比较 两次运用,一次是合法验证,一次是求最值比较 三步骤 : 1、结构体; 2、cmp, 3、【合法验证与比较】 (日期left < temp //重新完成B1028 思路 判断一个数 //思路 : 输入日期 有效(日期mi原创 2016-09-04 19:58:20 · 374 阅读 · 0 评论 -
PATB1009:说反话
PATB1009:说反话【思路】: 输入的是一个中间含有空格的字符串(末尾不含有字符串)。 输出是多个单词 中间的空格需要自己添加 用word[r][l] 一个个累加str[i]的字符。如果遇到“ 空格”,就结束word一行,进行下一个单词 【知识点】 > 用word[r][l] 一个个累加str[i]的字符。如果遇到“ 空格”,就结束word一行,进行下一个单词原创 2016-09-04 19:59:14 · 595 阅读 · 0 评论 -
PATB1033: 旧键盘打字
PATB1029: 旧键盘打字【思路】:HASH经常用来求两个集合的交 集 补集等 。去重小能手1首先对目标集合中的元素进行HASH,这里+ 则 所有的大写字母over ,一个字母则小写一起go die 数字无影响的2然后对元集合进行过滤性输出【知识点】fill(a,a+5,true)isupper()判断字符是大写字母吗 【参考答案】//B1033旧键盘打字void B1033(){ st原创 2016-09-05 20:26:54 · 480 阅读 · 0 评论