2017-08-31 20:11:39
writer:pprp
一开始说好这个是个水题,就按照水题的想法来看,唉~
最后还是懵逼了,感觉太复杂了,一开始想要排序两串字符,然后移动之类的,但是看了看
好像没有什么规律...
然后就去膜大神code了
其实转换了一个思路,对两个字符串分别统计每个的个数,
然后分别排序,如果每个个数都可以对的上就说明可以通过两个操作得到
代码如下:
/*
@theme:poj 2159 ancient cipher
@writer:pprp
@declare:
@begin:19:20
@end:20:07
@date:2017/8/31
*/ #include <iostream>
#include <algorithm>
#include <cstdio> using namespace std; int main()
{
//freopen("in.txt","r",stdin);
ios::sync_with_stdio(false); int a[] = {};
int b[] = {}; string str1, str2; cin >> str1 >> str2; for(int i = ; i < str1.length() ; i++)
a[str1[i] - 'A']++;
for(int i = ;i < str2.length() ; i++)
b[str2[i] - 'A']++; sort(a,a+);
sort(b,b+); int i;
for(i = ; i < ; i++)
if(a[i] != b[i])
break; if(i != )
cout << "NO" << endl;
else
cout << "YES" << endl; return ;
}
英语:
encrypted 加密
eavesdrop 偷听
cipher 密码
substitute 代替
permutation 变换组合