#HK4288. 「KTSC 2020 R1」字符串查找
「KTSC 2020 R1」字符串查找
注意事项
在 LibreOJ 上,由于语言限制,目前只支持以下语言的提交:
- C++(标准为 C++ 17 及以上)
请在提交源代码前添加 #include "match.h"。
题目描述
题目译自 2020년도 국제정보올림피아드 대표학생 선발고사 - 1차 선발고사 T1 「문자열 찾기」
对于由小写英文字母组成的两个字符串 和 ,当满足以下条件时,称这两个字符串实际上相同:
- 和 的长度相同。
- 对于所有可能的整数 和 ,如果 的第 个字符和第 个字符相同,则 的第 个字符和第 个字符也相同。
- 对于所有可能的整数 和 ,如果 的第 个字符和第 个字符不同,则 的第 个字符和第 个字符也不同。
例如, 和 是实际上相同的字符串。但是, 和 不是实际上相同的字符串。
编写一个程序,接收字符串 和 ,计算 的连续子字符串中与 实际上相同的子字符串的数量。
例如, 和 , 中从左到右的子字符串 有 个与 实际上相同。
你需要实现以下函数:
int findP(char T[], char P[], int N, int M);
T是长度为 的数组(字符串)。P是长度为 的数组。T和P分别存储了长度为 和 的小写英文字母字符串。T和P的最后一个位置存储了'\0'。findP函数返回 的连续子字符串中与 实际上相同的子字符串的数量。
实现细节
你需要提交一个名为 match.cpp 的文件,该文件中实现以下函数:
int findP(char T[], char P[], int N, int M);
该函数应按照上述描述工作。当然,你可以创建其他函数并在内部使用。提交的代码不应执行输入输出操作或访问其他文件。
示例评测程序
示例评测程序按以下格式读取输入:
- 第 行:字符串
- 第 行:字符串
示例评测程序将输出你的代码中 findP() 函数返回的值。
样例
| 函数调用 | 返回值 |
|---|---|
findP("abababbab", "pqp", 9, 3) |
5 |
数据范围与提示
对于所有输入数据,满足:
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 无附加限制 |