1. 程式人生 > >UVa 1339 Ancient Cipher

UVa 1339 Ancient Cipher

txt ace cstring 既然 字母 int eof https lse

題目鏈接:

https://cn.vjudge.net/problem/UVA-1339

 1 /*
 2 問題
 3 輸入兩個序列,問兩個序列能否通過重排和一個字母照應而形成一個序列。
 4 
 5 解題思路
 6 既然可以通過某種照應使其相等,那麽出現的是哪個字母就顯得不是那麽重要了,重要的是每個字母出現的次數,將每個字母
 7 出現的次數通過重排看是否相同,能夠相同就證明可以通過一定的照應使其相等。 
 8 */ 
 9 #include<cstdio>
10 #include<cctype>
11 #include<cstring>
12 #include<algorithm>
13
using namespace std; 14 int OK(int a[],int b[]); 15 int main() 16 { 17 //freopen("E:\\testin.txt","r",stdin); 18 char a[110],b[110]; 19 int i,c[26],d[26]; 20 while(scanf("%s%s",a,b) != EOF){ 21 for(i=0;a[i] != \0;i++) 22 a[i]=tolower(a[i]); 23 for(i=0;b[i] !=
\0;i++) 24 b[i]=tolower(b[i]); 25 26 memset(c,0,sizeof(c)); 27 for(i=0;a[i] != \0;i++){ 28 c[a[i]-a]++; 29 } 30 memset(d,0,sizeof(d)); 31 for(i=0;b[i] != \0;i++){ 32 d[b[i]-a]++; 33 } 34 sort(c,c+26
); 35 sort(d,d+26); 36 37 if(OK(c,d)) 38 printf("YES\n"); 39 else 40 printf("NO\n"); 41 } 42 return 0; 43 } 44 45 int OK(int a[],int b[]) 46 { 47 int i; 48 for(i=0;i<26;i++){ 49 if(a[i] != b[i]) 50 return 0; 51 } 52 return 1; 53 }

UVa 1339 Ancient Cipher