CSU 1716(字符串)



1716: Morse

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 82   Solved: 51
[ 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

HINT

Source




题意:给你26个字母的编码,然后给你一些单词,在给你一些组合成的编码,问能否通过编码找出字典里的那个单词,如果可以全部找到就按顺序输出,否则就输出第一个没有找到的


题解:开始是想搞一下模式串匹配,kmp什么之类的,后来想了一下根本没那么麻烦,直接将单词转化为编码,最后插入map里面找就OK啦




#include<cstdio>  
#include<cstring>  
#include<cstdlib>  
#include<cmath>  
#include<iostream>  
#include<algorithm>  
#include<vector>  
#include<map>  
#include<set>  
#include<queue>  
#include<string>  
#include<bitset>  
#include<utility>  
#include<functional>  
#include<iomanip>  
#include<sstream>  
#include<ctime>  
using namespace std;  
  
#define N int(1e3)  
#define inf int(0x3f3f3f3f)  
#define mod int(1e9+7)  
typedef long long LL;  

vector<string>v[30];
map<string,string>dict;
int main()  
{  
#ifdef CDZSC  
    freopen("i.txt", "r", stdin);  
    //freopen("o.txt","w",stdout);  
    int _time_jc = clock();  
#endif  
	int w,n;
	char s[N],t[N],code[N],tmp[N];
	for(int i=0;i<26;i++)
	{
		scanf("%s%s",s,t);
		v[s[0]-'A'].push_back(string(t));
	}
	scanf("%d",&n);
	string ss;
	for(int i=0;i<n;i++)
	{
		ss.clear();
		scanf("%s",tmp);
		for(int j=0;tmp[j];j++)
		{
			ss+=v[tmp[j]-'A'][0];
		}
		dict[ss]=string(tmp);
	}
	vector<string>ans;
	while(~scanf("%d",&w)&&w)
	{
		int ok=1;
		ans.clear();
		for(int i=0;i<w;i++)
		{
			scanf("%s",code);
			if(dict.count(string(code)))
			{
				ans.push_back(dict[string(code)]);
			}
			else if(ok)
			{
				ok=0;
				printf("%s ",code);
			}
		}

		if(ok)
		{
			for(int i=0;i<ans.size();i++)
			{
				if(i)printf(" ");
				printf("%s",ans[i].c_str());
			}
			printf("\n");
		}
		else
		{
			puts("not in dictionary.");
		}
	}
    return 0;  
}  






1716: Morse

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 82   Solved: 51
[ 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

HINT

Source

你可能感兴趣的:(CSU 1716(字符串))