1110.cpp
来自「哈尔滨工业大学ACM 竞赛网上在线试题集锦的源代码」· C++ 代码 · 共 98 行
CPP
98 行
/* This Code is Submitted by wywcgs for Problem 1110 on 2005-10-03 at 00:07:00 */
#include <stdio.h>
#include <string.h>
bool mystrcmp(char*, char*);
int main()
{
int E, K, badKey[32], max, t = 1;
int i, j, k, len, stack[32], top, wordlen;
char excuse[32][128], word[32];
char keyWord[32][32];
bool begin;
while(scanf("%d %d", &K, &E) == 2) {
memset(badKey, 0, sizeof(badKey));
for(i = 0; i < K; i++) {
scanf("%s", keyWord[i]);
}
max = -1;
top = 0;
while(getchar() != '\n')
;
for(i = 0; i < E; i++) {
gets(excuse[i]);
len = strlen(excuse[i]);
j = 0;
while(j <= len) {
begin = false;
wordlen = 0;
for(; j <= len; j++) {
if(j == len) {
word[wordlen] = 0;
j++;
break;
} else if(excuse[i][j] <= 'z' && excuse[i][j] >= 'A') {
word[wordlen++] = excuse[i][j];
begin = true;
} else {
if(begin) {
word[wordlen] = 0;
break;
}
}
}
for(k = 0; k < K; k++) {
if(mystrcmp(word, keyWord[k])) {
badKey[i]++;
break;
}
}
}
if(badKey[i] == max) {
stack[top++] = i;
} else if(badKey[i] > max) {
max = badKey[i];
top = 0;
stack[top++] = i;
}
}
printf("Excuse Set #%d\n", t);
t++;
for(i = 0; i < top; i++) {
printf("%s\n", excuse[stack[i]]);
}
putchar('\n');
}
return 0;
}
bool mystrcmp(char *a, char *b)
{
int lena = strlen(a);
int lenb = strlen(b);
char ca, cb;
int i;
if(lena != lenb) {
return false;
} else {
for(i = 0; i < lena; i++) {
ca = a[i];
cb = b[i];
if(ca >= 'A' && ca <= 'Z') {
ca += 'a' - 'A';
}
if(cb >= 'A' && cb <= 'Z') {
cb += 'a' - 'A';
}
if(ca != cb) {
return false;
}
}
return true;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?