UVa 1339 Ancient Cipher
题目链接:
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 }
欢迎交流,共同进步——