995
  • 板块灌水区
  • 楼主xmc1027wenti
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/26 11:11
  • 上次更新2024/10/26 12:44:13
查看原帖
995
1101630
xmc1027wenti楼主2024/10/26 11:11

题目:

DC02-18-03-生成字母串

题目描述

英语老师要求学生按照如下规则写一串字母:

(1) 如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写;

(2) 如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写。

例如"aAaABCDdcbBC"就是一个合法的字母串;而"dEFfeFGhI"就是非法的。

本题就请你编写程序,自动生成一个合法的字母串。

输入格式

输入在第一行给出一个不超过10000的正整数N和第一个字母。随后一行给出一个由'0'和'1'组成的长度为N的字符串。这个串给出了字母串的生成规则:从第一个字母开始,如果对应的规则串字符是'0',则下一个字母应该生成当前字母的大/小写;如果是'1'则下一个字母应该生成当前字母的前/后一个字母。注意:因为字母表中'a'没有前一个字母,'Z'没有后一个字母,所以如果此时遇到'1'就忽略之。

输出格式

在一行中输出按规则生成的字母串。

样例 #1

样例输入 #1

12 a
001011101101

样例输出 #1

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;
}
2024/10/26 11:11
加载中...