POJ2159题解
解题重点在如下几个地方
第一:正确接收来自输入流的数据
第二:懵逼的我居然把冒泡写错了,啊。。。
第三:统计频率就AC了,不要想太复杂
SOURCE
质量
Problem: 2159 User: 20132430222
Memory: 160K Time: 63MS
Language: C++ Result: Accepted
源码
// 2159.cpp : 定义控制台应用程序的入口点。
//
//#include"stdafx.h"
#include<stdio.h>
#include<stdlib.h>
typedef struct{
char alphabet;
int freq;
}list;
int main(){
list Encrypted[26]={{'A',0},{'B',0},{'C',0},{'D',0},{'E',0},{'F',0},{'G',0},
{'H',0},{'I',0},{'J',0},{'K',0},{'L',0},{'M',0},{'N',0},
{'O',0},{'P',0},{'Q',0},{'R',0},{'S',0},{'T',0},
{'U',0},{'V',0},{'W',0},{'X',0},{'Y',0},{'Z',0}};
list Orign[26]={{'A',0},{'B',0},{'C',0},{'D',0},{'E',0},{'F',0},{'G',0},
{'H',0},{'I',0},{'J',0},{'K',0},{'L',0},{'M',0},{'N',0},
{'O',0},{'P',0},{'Q',0},{'R',0},{'S',0},{'T',0},
{'U',0},{'V',0},{'W',0},{'X',0},{'Y',0},{'Z',0}};
char ch;
ch = getchar();
while(ch!='\n'){
(Encrypted[(ch-'A')].freq)++;
ch = getchar();
}
ch = getchar();
while(ch!='\n'){
(Orign[(ch-'A')].freq)++;
ch = getchar();
}
int E[26],O[26];
int i = 0;
for(i=0;i<26;i++){
E[i] = Encrypted[i].freq;
O[i] = Orign[i].freq;
}
int j = 0;
int k = 0;
int tmp;
for(j = 0;j<26;j++){
for(k = 1;k<(26-j);k++){
if(E[k]<E[k-1]){
tmp = E[k-1];
E[k-1] = E[k];
E[k] = tmp;
}
if(O[k]<O[k-1]){
tmp = O[k-1];
O[k-1] = O[k];
O[k] = tmp;
}
}
}
int flag = 0;
for(i = 25;i>=0;i--){
if(E[i]!=O[i]){
flag = 1;
break;
}
if(E[i]==0){
break;
}
}
if(flag == 1){
printf("NO\n");
}else{
printf("YES\n");
}
system("pause");
return 0;
}