UVa 1339 Ancient Cipher
阿新 • • 發佈:2018-06-03
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> 13using 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