Decoding Baby Boos UVALive - 6917-------降低时间复杂度

本文提供了一道UVALive-6917竞赛题目的详细解答过程,通过字符串替换的方式实现了字符映射,有效降低了算法复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题传送门 :https://cn.vjudge.net/problem/UVALive-6917

题意很简单的一道题,甚至很多大牛都没读题目看了输入输出直接敲,我们出了一个问题,超时三发。这道题罚时太严重。罚时多,过得慢,应该好好思考一下自己队伍的状态

现在总结做法如下:

#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#define inf 0x3f3f3f
using namespace std;
char s[110000];
int main ()
{
    int t;
    scanf("%d",&t);
     getchar();
    while(t--)
    {
        char v[30]= {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
        scanf("%s",s);
        int m;
        scanf("%d",&m);
        char a,b;
        while(m--)
        {
            getchar();
            scanf("%c %c",&a,&b);
            for(int i=0; i<26; i++) //根据 样例输入2,就找到这个问题了,
            {
                if(v[i]==b) 
                 v[i]=a;
            }
        }
         //如果,v的值没有 改变 那么s[i] = v[s[i]-'A']是一定的 如果出现了变化,v【i】也发生了变化,这样就把算法的复杂度降了下来。
         int n=strlen(s);
        for(int i=0; i<n; i++)
        {
            if(s[i]>='A' &&s[i]<='Z')
                s[i]=v[s[i]-'A'];
        }
        printf("%s\n",s);

    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值