PAT 乙级 1078 / 1084
题目
题解
1078和1084这两道题放在一块写,主要是因为这两道题的解法和做题思路非常相似;之前我做这一类题没有一个固定的套路,想到哪写到哪,在某种程度上就导致代码冗余度高,准确率不够等种种问题;通过这两道题我希望我能够掌握这一类题目的解决方式,并最好可以总结成一个模板,形成一个固定的套路;
这两道题目的本质实际上就是对一个数串或字符串进行连续重复元素的统计,再以某种方式把统计结果输出;因此其中最需要解决的问题就是如何统计重复元素并做记录;
这两道题的解题方式总结如下:
1. 遍历串中的元素,并事先根据题意定义相关统计变量;
2. 在第一层遍历循环中嵌套一层 while 循环,循环条件是当前访问元素是否等于下一个将要访问的元素、相关题设条件;
3. 若等于,则进入循环,统计变量根据题设条件改变,第一层的循环变量自增1;
4. 若不等于,则根据题设条件进行其他操作;
还有一个问题需要再提一下,解题思路一定要灵活,不要囿于格式化的思维模式,比方说题目对一个字符串进行操作,那么我就会把所有的输出都化为字符类型再输出,这就是典型的僵化思维,如果题目没有规定输出格式,那么在统计结束后直接输出整数或浮点类型的结果就可以在很大程度上简化代码;这只是一个例子,主要目的是为了提醒自己思维不要那么死板,在做题过程中一定要灵活。
代码
1078
#include <iostream>
#include <string>
using namespace std; void fun_C () {
string str;
getline(cin, str);
for (int i = ; i < str.size(); i++) {
int cnt = ;
while (str[i] == str[i + ]) {
cnt++;
i++;
}
if (cnt != )
cout << cnt;
cout << str[i];
}
cout << endl;
} void fun_D () {
string str;
getline(cin, str);
for (int i = ; i < str.size(); i++) {
int cnt = ;
while (str[i] >= '' && str[i] <= '') {
cnt = cnt * + int(str[i]) - ;
i++;
}
for (int j = ; j < cnt; j++)
cout << str[i];
if (cnt == )
cout << str[i];
}
cout << endl;
} int main() {
char c = ;
cin >> c;
cin.ignore();
if (c == 'C')
fun_C();
else
fun_D(); return ;
}
1084
#include <iostream>
#include <vector>
using namespace std; int main() {
vector<int> vec, tmp;
int d = , n = ;
int cnt = ;
cin >> d >> n;
vec.push_back(d);
for (int A = ; A < n; A++) {
for (int i = ; i < vec.size(); i++) {
while (vec[i] == vec[i + ] && i < vec.size() - ) {
cnt++;
i++;
}
tmp.push_back(vec[i]);
tmp.push_back(cnt);
cnt = ;
}
vec = tmp;
tmp.clear();
}
for (int i = ; i < vec.size(); i++)
cout << vec[i];
cout << endl; return ;
}
PAT 乙级 1078 / 1084的更多相关文章
- PAT乙级:1084 外观数列 (20分)
PAT乙级:1084 外观数列 (20分) 题干 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d ...
- PAT 乙级 1078 字符串压缩与解压 (20)
文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示.例如 ccccc 就用 5c 来表示.如果字符没有重复,就原样输出.例如 ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT 乙级 1017
题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
- PAT 乙级 1059
题目 题目地址:PAT 乙级 1059 题解 开始我是从暴力循环的角度考虑这道题,大概计算了一下时间复杂度应该不会超,但是很不幸没有通过,时间超限:之后考虑搜索算法可能优化不太好,因此就把输入的序列先 ...
随机推荐
- element-ui国际化探索(大型项目适用)
配置好了,自己感觉是比较简单的,就是有一点点繁琐,加油吧. 由于保密,无法拿出项目,故写了一个小demo,记录一下,适用于大型项目: 项目中需要自定义切换中/英文(国际化),基于vue.js,结合vu ...
- HQL和SQL
hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性 sql是面向数据库表查询,格式:from + 表名 + where + 表中字段 1.查询 一般在hiber ...
- docker 资源限制
docker run 时使用-m指定可以使用的内存大小, 记录在cgroup配置文件中 cat /sys/fs/cgroup/memory/memory.limit_in_bytes jvm内存会超过 ...
- PHP Redis锁
一.什么是 Redis Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库 二.什么是 Redis 分布式锁 分布式锁其实可以理解为:控 ...
- Unity [Tooltip("")]
把Ad2Controller脚本挂在Ad2Ad3Manager游戏对象上,在非运行状态下把鼠标放在inspector的AdButtonObj2上就会显示广告2按钮. 如下图:
- [知乎作答]·关于在Keras中多标签分类器训练准确率问题
[知乎作答]·关于在Keras中多标签分类器训练准确率问题 本文来自知乎问题 关于在CNN中文本预测sigmoid分类器训练准确率的问题?中笔者的作答,来作为Keras中多标签分类器的使用解析教程. ...
- Cache 和 Buffer 区别是什么
一 从常识来说,cache叫缓存,buffer叫缓冲. 二 尴尬的是缓存是什么?缓冲是什么? 缓冲,缓和冲击.也就是100次保存数据库,先把操作保存到本地,然后满10次才保存到数据库. 缓存,就是缓冲 ...
- 数据库用户被锁怎么办,报the passord logon
–1.使用管理员用户登陆,查看用户状态: select username,account_status from dba_users; –2.修改用户状态: alter user base accou ...
- java中调用ElasticSearch中文分词ik没有起作用
问题描述: 项目中已经将'齐鲁壹点'加入到扩展词中,但是使用客户端调用的时候,高亮显示还是按照单个文字分词的: 解决方案: 1.创建Mapping使用的分词使用ik 2.查询使用QueryBuilde ...
- mysql set names 命令和 mysql字符编码问题
先看下面的执行结果: (root@localhost)[(none)]mysql>show variables like 'character%'; +--------------------- ...