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 题解 开始我是从暴力循环的角度考虑这道题,大概计算了一下时间复杂度应该不会超,但是很不幸没有通过,时间超限:之后考虑搜索算法可能优化不太好,因此就把输入的序列先 ...
随机推荐
- sysbench压力测试总结
sysbench压力测试工具简介sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Orac ...
- AngularJs1.X学习--路由
[三种使用说明:] $stateProvider.state('station.printQRCode', { //params: { 'parentOfficeId': null }, //一次性参 ...
- python3.6下安装wingIDE破解方法
1.wingIDE的下载: 在电脑配置好的python环境情况下,去官网下载wingIDE6,按照一般方式安装好.安装好它会自动提示你是否激活,你点击激活.然后到下一步. 2.脚本的制作: impor ...
- (转)Word快捷键大全 Word2013/2010/2007/2003常用快捷键大全
Word对于我们办公来说,是不可缺少的办公软件,因为没有它我们可能无法进行许多任务.所以现在的文员和办公室工作的人,最基础的就是会熟悉的使用Office办公软件.在此,为提高大家Word使用水平,Wo ...
- vue简单的CheckBox节点树
初学vue.js,恰好公司有个页面需要做一个简单的CheckBox组成的节点树,于是摸索着写了一个. 业务逻辑为:选中父节点,子节点全部选中:取消选中父节点,子节点全部取消:选中字节点,父节点选中. ...
- Eucalyptus简介
1.Eucalyptus是什么? Eucalyptus n.桉树 Eucalyptus is a Linux-based software architecture that implements ...
- 入口类和@SpringBootApplication
SpringBoot通常有一个名为*Application的入口类,入口类里有一个标准的Java应用的入口方法,main方法,在该方法中使用SpringApplication.run(xxxxxApp ...
- 如何使用VS将项目生成一个安装包?
VS2010项目的部署与安装winform程序,我想进行安装.1.在解决方案中 ——点击右键——添加 2.然后选择 安装和部署 ——安装向导 可以更改名称 3.点击 下一步 4.然后选择上那3个 5. ...
- shell中的判断语句
1.字符串判断 str1 = str2 当两个串有相同内容.长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空,变量) -z str ...
- 自己实现的简单的grid
12年在第一家公司的时候,有过很长一段时间在前端的使用研究上.一开始的时候使用ExtJs4.0 MVC 来开发前端,觉得里面的风转的组件非常好用,Panel.window.tree等等,简化了对于前端 ...