您的位置:首页 > 其它

Codeforces Gym 100623E Problem E. Enchanted Mirror

2017-03-31 10:47 357 查看
题目传送门: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: