题目:
英语老师要求学生按照如下规则写一串字母:
(1) 如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写;
(2) 如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写。
例如"aAaABCDdcbBC"就是一个合法的字母串;而"dEFfeFGhI"就是非法的。
本题就请你编写程序,自动生成一个合法的字母串。
输入在第一行给出一个不超过10000的正整数N和第一个字母。随后一行给出一个由'0'和'1'组成的长度为N的字符串。这个串给出了字母串的生成规则:从第一个字母开始,如果对应的规则串字符是'0',则下一个字母应该生成当前字母的大/小写;如果是'1'则下一个字母应该生成当前字母的前/后一个字母。注意:因为字母表中'a'没有前一个字母,'Z'没有后一个字母,所以如果此时遇到'1'就忽略之。
在一行中输出按规则生成的字母串。
12 a
001011101101
aAaABCDdcbBC
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n; char c;
char s[10010];
cin>>n >>c;
cin>>s;
cout<<c;
for(int i=0;i<n;i++){
if(s[i]=='0'){//变大小写
if(c>='A' and c<='Z'){
c+=32;
}
else c-=32;
}
else{
if(c>='A' and c<='Z'){
if(c=='z') continue;
c++;
}
else{
if(c=='a') continue;
c--;
}
}
cout<<c;
}
return 0;
}