POJ2159 ancient cipher - 思维题
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[26] = {0};
int b[26] = {0};
string str1, str2;
cin >> str1 >> str2;
for(int i = 0 ; i < str1.length() ; i++)
a[str1[i] - 'A']++;
for(int i = 0 ;i < str2.length() ; i++)
b[str2[i] - 'A']++;
sort(a,a+26);
sort(b,b+26);
int i;
for(i = 0 ; i < 26 ; i++)
if(a[i] != b[i])
break;
if(i != 26 )
cout << "NO" << endl;
else
cout << "YES" << endl;
return 0;
}
英语:
encrypted 加密
eavesdrop 偷听
cipher 密码
substitute 代替
permutation 变换组合
代码改变世界