poj 2159 Ancient Cipher(水)
由于顺序是可以改变的. 所以考虑是否可以映射.只要存在字母对应出现的次数都相同.那么就可以通过映射得到. 具体是开一个数组记录每个字母出现的次数... 然后sort
/*************************************************************************
> File Name: code/poj/2159.cpp
> Author: 111qqz
> Email: rkz2013@126.com
> Created Time: 2015年09月23日 星期三 19时04分34秒
************************************************************************/
1#include<iostream>
2#include<iomanip>
3#include<cstdio>
4#include<algorithm>
5#include<cmath>
6#include<cstring>
7#include<string>
8#include<map>
9#include<set>
10#include<queue>
11#include<vector>
12#include<stack>
13#include<cctype>
14#define y1 hust111qqz
15#define yn hez111qqz
16#define j1 cute111qqz
17#define ms(a,x) memset(a,x,sizeof(a))
18#define lr dying111qqz
19using namespace std;
20#define For(i, n) for (int i=0;i<int(n);++i)
21typedef long long LL;
22typedef double DB;
23const int inf = 0x3f3f3f3f;
24const int N=30;
25string st1,st2;
26int len;
27int a[N],b[N];
1bool cmp( int a,int b)
2{
3 if (a>b) return true;
4 return false;
5}
6int main()
7{
8 #ifndef ONLINE_JUDGE
9 freopen("in.txt","r",stdin);
10 #endif
11 ms(a,0);
12 ms(b,0);
13 cin>>st1>>st2;
14 len = st1.length();
15 // cout<<st1<<endl<<st2<<endl;
16 for ( int i = 0 ; i < len ; i ++)
17 {
18 int tmp = st1[i]-'A';
19 a[tmp]++;
20 tmp = st2[i]-'A';
21 b[tmp]++;
22 }
1 sort(a,a+26,cmp);
2 sort(b,b+26,cmp);
3 // for ( int i = 0 ; i < 26 ; i++) cout<<"a[i]:"<<a[i]<<" b[i]"<<b[i]<<endl;
1 bool flag = true;
2 for ( int i = 0 ; i < 26 ; i++)
3 {
4 if (a[i]!=b[i])
5 {
6 flag = false;
7 break;
8 }
9 }
10 if (flag)
11 {
12 puts("YES");
13 }
14 else
15 {
16 puts("NO");
17 }
1 #ifndef ONLINE_JUDGE
2 fclose(stdin);
3 #endif
4 return 0;
5}