Codeforces Gym 100623E Problem E. Enchanted Mirror

来源:互联网 发布:抢票软件 付费 编辑:程序博客网 时间:2024/05/21 01:29

题目传送门:http://codeforces.com/gym/100623/attachments


题解:一道暴力的题...先把第一个字符串换成正确的字符串,如果换不了就直接输出No,刚开始没注意到这里,错了第6组,换的时候第二个字符串也对应交换,然后一个字符串里重复的字母可以互换位置,对应第二个字符串里的位置也可以互换,看一下能不能换成第二个目标字符串


Code:

#include <iostream>#include <cstdio>#include <string>#include <cstring>using namespace std;int main(){    freopen("enchanted.in","r",stdin);    freopen("enchanted.out","w",stdout);    string a,b,c,d;    int flag,num[30];    while(cin>>a>>b>>c>>d)    {        for(int i=0;i<a.size();i++)        {            if(a[i]!=c[i])            {                for(int j=i+1;j<a.size();j++)                {                    if(a[j]==c[i])                    {                        swap(a[i],a[j]);                        swap(b[b.size()-i-1],b[b.size()-j-1]);                        break;                    }                }            }        }        memset(num,0,sizeof(num));        flag=1;        for(int i=0;i<26;i++)        {            for(int j=0;j<c.size();j++)            {                if(c[j]==i+'A')                {                    num[b[b.size()-j-1]-'A']++;                    num[d[d.size()-j-1]-'A']--;                }            }            for(int j=0;j<26;j++)                if(num[j]!=0)                    flag=0;        }        if(flag&&a==c)            cout<<"Yes"<<endl;        else            cout<<"No"<<endl;    }    return 0;}


0 0
原创粉丝点击