Decoding Baby Boos UVALive

来源:互联网 发布:魔兽争霸3全屏软件 编辑:程序博客网 时间:2024/05/01 07:19

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

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

现在总结做法如下:

#include <iostream>#include <cstring>#include <cmath>#include <cstdio>#define inf 0x3f3f3fusing 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);    }}



原创粉丝点击