Morse
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 137 Solved: 84
[ Submit][ Status][ Web Board]
Description
Input
Output
Sample Input
A .-
B -...
C -.-.
D -..
E .
F ..-.
G --.
H ....
I ..
J .---
K -.-
L .-..
M --
N -.
O ---
P .--.
Q --.-
R .-.
S ...
T -
U ..-
V ...-
W .--
X -..-
Y -.--
Z --..
7
PROGRAMMING
REGIONAL
PARIS
CONTEST
CENTRAL
SOUTH
ACM
6
.--.-.--
...---..--....
-.-..-.-.-..-.-..
.-..--...----..-.-..
.--..-.-----..-..-----..-.--.
-.-.----.-....-
4
.--.-.--
.-...---..-
.-...---..-.
.--.-.--
1
.--..-.-......
0
Sample Output
ACM SOUTH CENTRAL REGIONAL PROGRAMMING CONTEST
.-...---..- not in dictionary.
PARIS
题意:给A~Z对应的字符串,然后给出n个串,再给出w个串,如果w个串都对应n个串里的某一个,那么按照顺序输出
如果有至少一个在n个串里都找不到,那么输出第一个找不到的串
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
char a[27][1000];
char op[105][105];
string s[105],str[105];
int ans[105];
int main()
{
int n,w;
for(int i=0;i<26;i++)
gets(a[i]);
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",op[i]);
s[i]="";
for(int j=0;j<strlen(op[i]);j++)
{
int len=strlen(a[op[i][j]-'A']);
for(int k=2;k<len;k++)
s[i]+=a[op[i][j]-'A'][k];
}
}
while(~scanf("%d",&w)&&w)
{
int flag=0,cnt=0;
for(int i=0;i<w;i++)
{
cin>>str[i];
int vis=0;
for(int j=0;j<n;j++)
if(str[i]==s[j])
{
ans[i]=j;
vis=1;
break;
}
if(!vis) {
ans[cnt++]=i;
flag=1;
}
}
if(flag)
{
cout<<str[ans[0]]<<" ";
printf("not in dictionary.\n");
}
else
{
for(int i=0;i<w;i++)
{
if(i>0) printf(" ");
printf("%s",op[ans[i]]);
}
printf("\n");
}
}
return 0;
}