String Successor zoj 3490
链接
[https://vjudge.net/contest/294259#problem/D]
题意
就是给你一个字符串,要进行n次操作
让你输出每次的字符串
操作规则:
1.如果有数字或者字母就忽略其他的字符
否则最后面的字符就加一
2.如果存在进位,就往离当前最近的数字或者字母进位
z-a, Z-A, 9-0
如果不存在数字或者字母就在当前位置前面增加进位
分析
就是上面的规则模拟。我真的怕这种模拟。
有点麻烦。关键就是进位的情况判断就好了
然后他有可能一次操作连续进位几次,就递归一直到不能进位为止
我分析的复杂度没有问题,提交一直TLE,第二天弄个好久才发现换行因为是cout<<endl
如果我改成cout<<"\n"就过了。气屎我了,下次一定要慎用cin,cout
记住了
代码
#include<bits/stdc++.h>
using namespace std;
void go(string &s,int cur){
if(isalnum(s[cur])){
if(s[cur]=='Z'||s[cur]=='z'||s[cur]=='9'){
int j=cur-1;
while(j>=0&&!isalnum(s[j]))
j--;
if(j<0){
if(s[cur]=='z') s[cur]='a',s.insert(cur,"a");
else if(s[cur]=='Z') s[cur]='A',s.insert(cur,"A");
else if(s[cur]=='9') s[cur]='0',s.insert(cur,"1");
}
else {
if(s[cur]=='z') s[cur]='a';
else if(s[cur]=='Z') s[cur]='A';
else if(s[cur]=='9') s[cur]='0';
go(s,j);
}
}
else {
s[cur]++; return;
}
}
else{
s[cur]++; return;
}
}
int main(){
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int t,n; string s;
cin>>t;
while(t--){
cin>>s>>n;
for(int i=0;i<n;i++){
int cur=-1;
for(int k=s.length()-1;k>=0;k--)
if(isalnum(s[k])){
cur=k; break;
}
if(cur==-1) cur=s.length()-1;
go(s,cur);
cout<<s<<"\n";
}
cout<<"\n";
}
return 0;
}
String Successor zoj 3490的更多相关文章
- ZOJ——String Successor(字符串模拟题目)
ZOJ Problem Set - 3490 String Successor Time Limit: 2 Seconds Memory Limit: 65536 KB The succes ...
- ZOJ 3490 String Successor(模拟)
Time Limit: 2 Seconds Memory Limit: 65536 KB The successor to a string can be calculated by applying ...
- ZOJ 3490 String Successor
点我看题目 题意 : 给你一个字符串,让你按照给定规则进行处理. 如果字符串里有字母或者是数字就忽略非字符数字,如果没有,就让最右边的那个字符+1. 增量都是从最右边的字母或者数字开始的. 增加一个数 ...
- ZOJ 3490 String Successor 字符串处理
一道模拟题,来模拟进位 暴力的从右往左扫描,按规则求后继就好了.除了Sample已给出的,还有一些需要注意的地方: 9的后继是10,而不是00: (z)的后继是(aa),而不是a(a): 输入虽然最长 ...
- String Successor(模拟)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3490 题意:给出一个字符串,一个操作次数,每次操作从当前字符串最右边的字符 ...
- zoj 3490
蛋都疼了,高了半天,Output Limit Exceeded 原来是输入的问题,我靠!!以后还是用输入输出c++好,这尼玛!!郁闷!!!!! #include<stdio.h> #inc ...
- Python中文乱码
1,注意:请使用智慧型浏览器 "CHROME" 配合理解和运作本文中提到的程序. 2,提示:谷歌的CHROME浏览器是迄今为止最智慧的浏览器,没有之一,只有第一. 3,谷歌的CHR ...
- 【转载】ACM总结——dp专辑
感谢博主—— http://blog.csdn.net/cc_again?viewmode=list ---------- Accagain 2014年5月15日 动态规划一 ...
- 【DP专辑】ACM动态规划总结
转载请注明出处,谢谢. http://blog.csdn.net/cc_again?viewmode=list ---------- Accagain 2014年5月15日 ...
随机推荐
- Cglib动态代理浅析
原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2018-06-29/18.html 作者:夜月归途 出处:http://www.guitu ...
- IEnumerable<T>和IQueryable<T>区分
LINQ查询方法一共提供了两种扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了IEnumerable<T>接口的集合进行扩展:Queryab ...
- DSAPI 添加删除程序到Windows启动
使用DSAPI.dll中文件类里现成的功能,将使你可以快速高效地实现将程序加入Windows启动项或从启动项中删除. 简单也是非常地简单,但由于是比较独立的功能,所以单独发表为整个篇幅. DSAPI ...
- c#计算机视觉库openCVSharp
作为研究计算机视觉的一员,大家肯定对Intel大名鼎鼎的openCV系列计算机视觉库耳熟能详,对于很多人来说openCV甚至已经成为其项目研究不可缺少的一部分.但是,由于项目兼容性的要求.openCV ...
- Java开发笔记(三十)大小数BigDecimal
前面介绍的BigInteger只能表达任意整数,但不能表达小数,要想表达任意小数,还需专门的大小数类型BigDecimal.如果说设计BigInteger的目的是替代int和long类型,那么设计Bi ...
- (11)Microsoft office Word 2013版本操作入门_word中表格操作
制作一个如下表格: 1. 插入一个4x4的表格或者手动绘制一个4x4表格. 1.1插入一个4x4表格或者绘制表格的按钮如下图所示 绘制表格,自己手动画比较复杂的表格 1.2对插入的表格: 点击表格的 ...
- Maven(十一)导入手动创建的Maven 工程
传统的导入方式并不能导入手动创建的Maven工程 因为eclipse项目必须有如图所示文件,才被认为是Eclipse工程 使用Maven方式导入 导入选项中并没有把项目复制到工作空间的选项,这是与传统 ...
- 【代码笔记】Web-CSS-CSS Padding(填充)
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- Callback方法和JQuery链的解释
这里讲到了一条语句运行多个JQuery方法(同一个元素)和动画100%完成后执行的callback方法. <!DOCTYPE html> <html> <head> ...
- java 线程方法 ---- yiled()
class MyThread3 implements Runnable{ @Override public void run() { for (int i = 0; i < 3; i++){ / ...