您的位置:首页 > 其它

UVa 409 - Excuses, Excuses!

2012-03-27 00:30 399 查看
写的很繁琐。

# include <stdio.h>
# include <ctype.h>

# define MAX_WORD_LEN 25
# define MAX_LINE_LEN 75
# define MAXN 25

char keyw[MAXN][MAX_WORD_LEN];
char line[MAXN][MAX_LINE_LEN];
char copy[MAX_LINE_LEN];
int cnt[MAXN];

int key_cnt(char *line, int len, char *keyword);

int main()
{
int i, j, k, e, len, max, T;

T = 0;
while (~scanf("%d%d", &k, &e))
{
++T;
getchar();
for (i = 0; i < k; ++i) gets(keyw[i]);
for (i = 0; i < e; ++i) gets(line[i]);
for (max = i = 0; i < e; ++i)
{
cnt[i] = 0;
len = strlen(line[i]);
strcpy(copy, line[i]);
for (j = 0; j < len; ++j)
if (isalpha(copy[j])) copy[j] = tolower(copy[j]);
for (j = 0; j < k; ++j)
cnt[i] += key_cnt(copy, len, keyw[j]);
if (cnt[i] > max) max = cnt[i];
}
printf("Excuse Set #%d\n", T);
for (i = 0; i < e; ++i)
if (cnt[i] == max) puts(line[i]);
printf("\n", max);
memset(cnt, 0, sizeof(cnt));
}

return 0;
}

int key_cnt(char *line , int len, char *keyword)
{
int cnt, lenKey;
char *p, *tmp;

cnt = 0;
lenKey = strlen(keyword);
p = line;
while (p-line < len)
{
tmp = strstr(p, keyword);
if (tmp == NULL) break;
else if (tmp==line || tmp+lenKey==line+len-1 || (!isalpha(*(tmp-1))&&!isalpha(*(tmp+lenKey)))) ++cnt;
p = tmp + lenKey;
}
return cnt;
}


/* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: