您的位置:首页 > 其它

uva 409 Excuses, Excuses!(字符串模拟)

2014-06-18 22:22 597 查看
也是根据题意来模拟就行了。

思路是从给的字符串入手,一个一个比对关键字。

有个debug的地方。交完题RE。

是:for (int i = 0; s[i] != '\0'; i++)//debug

开始时用的是 s[i] != '\n'。

大概是'\n'被getchar吃掉了,程序无法结束。

代码:

#include <stdio.h>
#include <string.h>

const int Maxn = 25;

char key[Maxn][Maxn], exc[Maxn][75];

int coutkey(char s[], int k)
{
int res = 0;
int m = 0;
char tmp[75];
for (int i = 0; s[i] != '\0'; i++)//debug
{
if (s[i] >= 'A' && s[i] <= 'Z')
tmp[m++] = s[i] + 32;
else if (s[i] >= 'a' && s[i] <= 'z')
tmp[m++] = s[i];
else
{
tmp[m] = '\0';
m = 0;
for (int j = 0; j < k; j++)
{
if(strcmp(tmp, key[j]) == 0)
res++;
}
}
}
return res;
}

int main()
{
#ifdef LOCAL
freopen("in.txt", "r", stdin);
#endif // LOCAL
int n[Maxn], k, e, num = 1, max;
while (scanf("%d%d", &k, &e) == 2)
{
max = 0;
getchar();
for (int i = 0; i < k; i++)
{
scanf("%s", &key[i]);
}
getchar();
for (int i = 0; i < e; i++)
{
fgets(exc[i], 75, stdin);
}
for (int i = 0; i < e; i++)
{
n[i] = coutkey(exc[i], k);
if (max < n[i])
max = n[i];
}
printf("Excuse Set #%d\n", num++);
for (int i = 0; i < e; i++)
{
if(n[i] == max)
{
printf("%s", exc[i]);
}
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: