任务描述 现在,搜索引擎已经走进了每个人的生活,比如,大家使用Google、百度,等等。 Wiskey希望将搜索引擎引入到他的图像检索系统中。 每个图像都有一个很长的文字描述,当用户键入一些关键字来查找图像时,系统会将关键字与图像的文字描述进行匹配,并显示出匹配关键字最多的图像。 本题要求,给出一个图像的文字描述和一些关键字,请您计算有多少个关键字匹配。 编程要求 根据提示,在右侧编辑器补充代码。 测试说明 输入说明 输入的第一行给出一个整数,表示有多少个测试用例。 每个测试用例首先给出整数N,表示关键字的数目;然后给出N个关键字(N<=10000),每个关键字只包含从'a'到'z'的字符,长度不超过50。 最后一行是图像的文字描述,长度不超过1000000。 输出说明 输出给出在描述中包含了多少个关键字。 平台会对你编写的代码进行测试: 测试输入: 1 5 she he say shr her yasherhs 预期输出: 3 用c语言写出此程序
时间: 2024-04-16 14:23:55 浏览: 129
ACM+算法模板(wiskey)--ACM+算法模板(wiskey)
```c
#include <stdio.h>
#include <string.h>
int countKeywords(int n, char keywords[][51], char* imageDescription) {
int matchCount = 0;
for (int i = 0; i < n; i++) {
if (strstr(imageDescription, keywords[i]) != NULL) {
matchCount++;
}
}
return matchCount;
}
int main() {
int testCases;
scanf("%d", &testCases);
for (int t = 0; t < testCases; t++) {
int n;
scanf("%d", &n);
char keywords[10000][51];
for (int i = 0; i < n; i++) {
scanf("%s", keywords[i]);
}
char imageDescription[1000000];
scanf("%s", imageDescription);
int matchCount = countKeywords(n, keywords, imageDescription);
printf("%d\n", matchCount);
}
return 0;
}
```
解释:
- 首先,读取测试用例的数量。
- 然后,遍历每个测试用例:
- 读取关键字的数量。
- 读取关键字列表。
- 读取图像的文字描述。
- 调用 `countKeywords` 函数计算关键字匹配数量。
- 输出关键字匹配数量。
`countKeywords` 函数使用了字符串库函数 `strstr` 来检查每个关键字是否在图像描述中出现。如果 `strstr` 返回的指针不为空,则表示关键字在图像描述中匹配成功。函数返回匹配的关键字数量。
注意:此代码假设输入的关键字和图像描述没有空格。如果有空格,可以使用 `fgets` 函数来读取带有空格的字符串。
阅读全文