您的位置:首页 > 其它

CF(#293 div2):A:Vitaly and Strings

2015-03-02 22:38 543 查看
题目链接:http://codeforces.com/contest/518/problem/A

题目讲的大意是,给出两个等长字符串s,t,求出任意一个字典序介于两者之间的任意一个等长字符串。题意很简单。但容易出错,被hacked了,最后还WA了好几次。值的记录一下。

代码及详解:

//freopen("C:\\Documents and Settings\\All Users\\桌面\\in.txt","w",stdout);

#include<iostream>
#include<sstream>
#include<cstdio>
#include<cmath>}
#include<cstring>
#include<algorithm>
#include<string>

using namespace std;

string s,t;

int main(){
//freopen("C:\\Documents and Settings\\All Users\\桌面\\kk.txt","r",stdin);
while(cin>>s){
cin>>t;
int cnt;
for(cnt=0;cnt<s.size();cnt++)
if(s[cnt]!=t[cnt]) break;
if(s[cnt]+1<t[cnt]){s[cnt]=s[cnt]+1;cout<<s<<endl;continue;}//如果这两个字符不相连可以直接得出答案
else{//则第cnt个字符只能存在于s段或t段
int i=1,op=0;
while(t[cnt+i]){//先看t段,如果t后面的字符不全为'a'则,可由t段得出答案
if(t[cnt+i]!='a') {t[cnt+i]='a';cout<<t<<endl;op=1;break;}
i++;
}
if(op) continue;
i=1;op=0;
while(s[cnt+i]){//再看s段,如果s段不全为'z',则可由s段得出答案
if(s[cnt+i]!='z') {s[cnt+i]='z';cout<<s<<endl;op=1;break;}
i++;
}
if(op) continue;
cout<<"No such string\n";
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: