P5587 打字练习

想发一篇较为简洁易懂的题解,代码看起来长,实际上还是很好理解的,而且很多对称着写就行了

一道字符串签到题,比赛的时候小蒟蒻调了一个小时都没调出来一直RE,坑点还是不少的(主要是我太水了)

  1. 听其他题解中说后50%的数据是范文中也有退格键的情况

  2. 边做边判断退格键是不行的,因为可能有多个退格键,删的不止当前的字符(边做边判断似乎也会WA后50%数据),可以用栈

  3. 计算时间t的时候应转为double再除以60,否则t<60时整除60为0,答案除以t会RE

如果使用字符数组的话可以用gets与strlen,但是the `gets' function is dangerous and should not be used.,似乎会WA一些点

做了这题对字符串的读入等操作基础还是有所巩固的。。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<stack>
using namespace std;
string a[10005],b[10005];
stack<char> aa,bb;//储存去除退格后的字符
int n,m,cnt,t,al,bl;
int main() {
for (n=1; ; n++) {
getline(cin,a[n]);
if (a[n][0]=='E' && a[n][1]=='O' && a[n][2]=='F' && a[n][3]=='\0') break;
}
for (m=1; ; m++) {
getline(cin,b[m]);
if (b[m][0]=='E' && b[m][1]=='O' && b[m][2]=='F' && b[m][3]=='\0') break;
} for (int i=1; i<n; i++) {
al=a[i].size(),bl=b[i].size(); while(!aa.empty()) aa.pop();
while(!bb.empty()) bb.pop(); for (int j=0; j<al; j++)
if (a[i][j]=='<') {
if (!aa.empty())
aa.pop();
} else aa.push(a[i][j]);//先扫一遍字符串,处理退格,将去除退格后的字符串存入栈 for (int j=0; j<bl; j++)
if (b[i][j]=='<') {
if (!bb.empty())
bb.pop();
} else bb.push(b[i][j]); while(aa.size()<bb.size()) bb.pop();
while(aa.size()>bb.size()) aa.pop();//调为相同长度再比较 while(!aa.empty()) {
if (aa.top()==bb.top()) cnt++;//统计答案
aa.pop(),bb.pop();
}
} scanf("%d",&t);
double time=1.0*t/60;
printf("%d",(int)(cnt/time+0.5));//四舍五入
}

最新文章

  1. iOS多线程主题
  2. shell命令大全
  3. 01-04 Json和弹窗
  4. php 解决和避免form表单重复提交的方法
  5. Linux-守护进程的实现
  6. Swift 性能探索和优化分析
  7. 使用Httpwatch分析响应时间--转
  8. android自定义控件 onMeasure() 测量尺寸
  9. jquery:ajax不接收返回值回
  10. 关于js的parseInt方式在不同浏览器下的表现
  11. 树莓派+花生棒+leanote搭建自己的笔记服务器
  12. Windows服务的安装卸载及错误查找
  13. BCM芯片FP原理及相关SDK数据结构介绍
  14. scheduler 基本原理
  15. CCF-权限查询-201612-3
  16. NHibernate中的API
  17. VB-串口通信详解
  18. org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement profile
  19. Dividing Infinity - Distributed Partitioning Schemes
  20. Asp.net MVC流程简述

热门文章

  1. C# 一次循环获取树的两种方法
  2. Oracle 12c 如何在 PDB 中添加 SCOTT 模式(数据泵方式)
  3. Codeforces 1304F2 Animal Observation (hard version) 代码(dp滑动窗口线段树区间更新优化)
  4. Django上传excel表格并将数据写入数据库
  5. WebService 之 SoapHeader
  6. Virtual DOM(八)
  7. 【转载】JS导出CSV文件
  8. Mac下Charles的安装和配置
  9. 【动态规划】【C/C++】简单的背包问题
  10. K8s控制器