Cow Phrasebook
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 2358 | Accepted: 796 |
Description
Ever the innovator, Farmer John is teaching cows to speak some phrases in human language. He writes each new phrase the cows learn in his phrase book, a total of M (1 <= M <= 1,000) so far.
When Farmer John is on a vacation, he can only communicate with his cows by telephone. Being an active vacationer, FJ visits beaches and fine restaurants when away from the farm. When he returns, his answering machine is full of N (1 <= N <= 10,000) messages, many potentially from the cows.
FJ vacations frugally and thus gets poor telephone service. Many of the recorded messages cut off before they are complete. Help FJ determine whether the recorded messages are from the phrasebook by determining if the message begins a phrase.
You will be given the phrasebook and a set of texts of the recorded messages. Count the number of recorded messages that are the beginning (prefix) of a phrase from the phrase book.
Complete phrases are from 1 to 60 characters in length, each of which is either a letter (upper or lower case), a period (.), comma (,), question mark (?) or space. There are no leading spaces, trailing spaces, or double spaces in a phrase. Comparisons are case-sensitive, and a phrase is in fact, considered to be prefix of itself.
Input
Line 1: Two space-separated integers, M and N
Lines 2..M+1: Phrases from the phrase book, one per line.
Lines M+2..M+N+1: Phrases spoken by cows, one per line.
Output
Line 1: A single integer that is the count of the number of messages that were proper prefixes of the phrasebook.
Sample Input
3 4
I will not buy this record, it is scratched.
My hovercraft is full of eels.
Do you want to come back to my place? Bouncy, bouncy.
I will not buy this rec
My helicopter is
Do you want to come back
I will not buy this cat.
Sample Output
2
Hint
Explanation of the sample:
Three input phrases (record, eels, bouncy); four query phrases (buy, helicopter, come back, cat).
The messages 'I will not buy this rec' and 'Do you want to come back' are valid prefixes of the phrasebook.
Source
解题报告:这个题就是简单地字符串的匹配问题,暴力匹配就行;
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX = 1010;
char sentence[MAX][65];
int main()
{
int N, M, i, j, ans, k;
char str[65];
scanf("%d%d", &M, &N);
getchar();
for (i = 0; i < M; ++i)
{
gets(sentence[i]);
}
int len;
ans = 0;
for (i = 0; i < N; ++i)
{
gets(str);
len = strlen(str);
for (j = 0; j < M; ++j)//暴力枚举
{
for (k = 0; k < len; ++k)
{
if (str[k] != sentence[j][k])
{
break;
}
}
if (k == len)//若完全匹配
{
ans ++;
break;
}
}
}
printf("%d\n", ans);
return 0;
}