“达梦杯”武汉理工大学第五届新生程序设计大赛c题C语言题解

作为一个刚学C语言的小趴菜,3个小时的比赛只做了2个题,就简单分享一下签到题C的解题思路。

题目描述

2022年8月24日,伟大的EternalAlexander发问

“什么是ACM?”

聪明的zech当然知道ACM是什么,但是他不想直接告诉EA,于是zech给出了两个长度为nnn的只包含大写字母的字符串SSS和TTT,让EA自己去寻找答案。
什么是ACM?这个答案隐藏在SSS串中。为了不让EA找到答案,zech在SSS串中加入了很多无用的信息来误导EA!而找到其中关键信息的方法就是使用TTT串。
具体来说,设字符串SSS的第iii个字符为SiS_iSi​,字符串TTT的第iii个字符为TiT_iTi​,那么SiS_iSi​是关键信息当且仅当Ti∈{′A′,′C′,′M′}T_i\in\left\{'A','C','M'\right\}Ti​∈{′A′,′C′,′M′}。

例如,当

时,关键信息就是"ELECTRONIC"和"SPORTS"(不含引号)。
伟大的EA并不知道怎么找到SSS中的关键信息,于是出成了题来考你们,你能帮帮他吗?
为了方便EA查看关键信息,请你将所有连续的关键信息作为一个字符串整体输出,字符串之间间隔一个空格,注意第一个字符串的开头和最后一个字符串的结尾不要有空格,在上面的例子中,你的输出应该是“ELECTRONIC SPORTS”(不含引号)。

输入描述:

第一行一个正整数,表示字符串的长度n(1≤n≤103)n(1\le n\le 10^3)n(1≤n≤103); 
第二行一个只含大写字母的字符串SSS; 
第三行一个只含大写字母的字符串TTT。

输出描述:

一行,一个字符串,表示从SSS串中提取的关键信息,保证输出不为空。

示例1

输入

25 BBQELECTRONICABCSPORTSFFT PPPACMACMACMCBDEMACCAMTTT

25
BBQELECTRONICABCSPORTSFFT
PPPACMACMACMCBDEMACCAMTTT

输出

ELECTRONIC SPORTS

ELECTRONIC SPORTS

解题思路

利用循环一一判断两组字S,T每个位置上字符的对应情况,只需判断每个Si,是不是对应ACM,以及上一个位置,是不是对应ACM,如果上一个不是则输出空格,如果时则输出Si,就能输出连续的字符串

代码

#include<stdio.h>
int main()
{   int n,i,j;
    char S[10000];
    char T[10000];
 //定义两个数组存输入的两行字符串
        scanf("%d",&n);
 //输入字符串长度
        scanf("%s",S);
        scanf("%s",T);
//输入两个字符串
     for(j=0;j<n;j++)
     {   
         if(T[j]=='A'||T[j]=='C'||T[j]=='M')
         {   
            printf("%c",S[j]);
         }
          else
          {
              if(T[j-1]=='A'||T[j-1]=='C'||T[j-1]=='M')
          {
              printf(" ");
          }
          }   
            //利用循环将两组字符串一一对比,如果T组为A,C,M,则输出对应S组字符
              //若该T组上一位为A,C,M时输出空格
              //这样就可以将对应字符串分开输出
      }
     
 return 0;
    
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间的远方32

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值