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日 ...
随机推荐
- iOS 字典实现原理
在目前的开发中,NSDictionary是经常被使用,不过很少人会研究字典NSDictionary底层的实现,下面我们来一起看一下NSDictionary的实现原理. 一.字典原理 字典通过使用- ( ...
- Windows 10 安装 ElasticSearch
Java环境准备 可以下载oracle最新的JDK,作为C#程序员,支持一下微软的Mobile OpenJDK,构建一下Java环境. 微软的OpenJDK是针对Xamarin.Android的SDK ...
- [Linux] memache打印所有的key
1.在使用memcache的时候 , 经常需要查看下里面存储的值 , 前提是要先知道key是啥,memcache没有redis的keys命令 2.下面两个命令的结合,可以查看到key stats it ...
- Node.js面试题之2017
译者按: 从ECMAScript标准,Node.js语法以及NPM模块角度来看,Node.js的发展让人目不暇接,那么面试题也得与时俱进. 原文: Node.js Interview Question ...
- tarjan系列算法代码小结
个人使用,可能不是很详细 强联通分量 这里的dfn可以写成low 因为都是在栈中,只要保证该节点的low值不为本身即可 void tarjan(int now) { dfn[now]=low[now] ...
- arcgis api 3.x for js 入门开发系列十二地图打印GP服务(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- 18-10-31 Scrum Meeting 3
1.会议照片 2.每人的工作 昨天完成的工作 1 制定配置 修改配置 查询配置这三个接口 2 3 获取单词对应的中文释义 4 完成测验的部分接口 5 后端对接计划的接口 6 剩余的 ...
- VS2017在线安装包下载
VS2017个人免费版即社区官方下载地址为:https://download.microsoft.com/download/D/1/4/D142F7E7-4D7E-4F3B-A399-5BACA91E ...
- Docker 启动,进入容器,查看log命令
1.启动一个容器 docker run -d -P training/webapp python app.py -d:让容器在后台运行. -P:将容器内部使用的网络端口映射到我们使用的主机上. 如果需 ...
- 让 Windows7 - 64bit 支持 VC++ 6.0 的解决方法(无法启动此程序,因为计算机中丢失 MSVCRTD.dll。尝试重新安装该程序以解决此问题)
源地址:https://www.cnblogs.com/poissonnotes/p/4372136.html 无法启动此程序,因为计算机中丢失 MSVCRTD.dll.尝试重新安装该程序以解决此问题 ...