poj 1598 句子中提取单词

来源:互联网 发布:网络主干光纤怎么布 编辑:程序博客网 时间:2024/06/06 01:15
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n, m;int num[40];char str[30][80];char s[30][100];int cmp(char ch) {    if((ch>= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))        return 1;    else        return 0;}int main(){    int maxn;    int q = 1;   while(scanf("%d%d", &n, &m) != EOF) {        getchar();        for(int i = 0; i < n; i++){            scanf("%s", str[i]);           // printf("%s\n", str[i]);        }        getchar();        memset(num, 0, sizeof(num));        maxn = 0;        for(int i = 0; i < m; i++) {            char ch[100];            gets(s[i]);           // printf("aaaaaaaaaaa%s\n", s[i]);            int len = strlen(s[i]);            for(int j = 0; j < len; j++) {                int a = 0;                while(cmp(s[i][j])) {  //用while很好的实现了句子中单词的提取,                    if(s[i][j] >= 'A' && s[i][j] <=  'Z')                        ch[a++] =s[i][j] + 32;                    else                        ch[a++] = s[i][j];                    j++;                }                if(a > 0) { //一个单词被提取出来。                   int k;                    ch[a] = '\0';                  //  printf("\n22222%s\n", ch);                    for(k = 0; k < n; k++) {  //查找是否有关键字。                        if(strcmp(ch, str[k]) == 0)                            break;                    }                    if(k < n)  //检查是否查到关键字。                        num[i]++;                }            }            maxn = max(maxn, num[i]);        }        printf("Excuse Set #%d\n", q++);        for(int i = 0; i < m; i++)            if(num[i] == maxn)            printf("%s\n", s[i]);        printf("\n");   }    return 0;}

0 0
原创粉丝点击