c++应用Horspool算法在一个长度为n(n<=1000)的文本中,查找一个长度为m(n>=m)的模式。如果模式位于文本串中,返回模式首次出现的位置;如果模式不在文本串中,返回-1。文本字符集为ASCII码。
时间: 2024-02-28 12:56:16 浏览: 77
", num_students, num_courses);
for (i = 0; i < num_students; i++) {
fprintf(fp, "%d好的,这是一个关于字符串匹配的问题。Horspool算法是一种字符串匹配算法,它 %s %s %d %d ", students[i].id, students[i].name, students[i].major, students[i].grade,的实现思路是基于坏字符规则的。我会为您提供一个C++的实现代码,您 students[i].class);
for (j = 0; j < num_courses; j++) {
fprintf(fp, "%.2f ",可以根据自己的需要进行调整和改进。
```c++
#include <iostream>
#include <cstring>
#define MAX_LEN students[i].scores[j]);
}
fprintf(fp, "\n");
}
for (i = 0; i < num_courses1005
#define ASCII_SIZE 256
using namespace std;
int Horspool(char text[], char pattern[], int n, int m); i++) {
fprintf(fp, "%d %s %.2f\n", courses[i].id, courses[i].name, courses[i {
int table[ASCII_SIZE];
// 构建坏字符表
for (int i = 0; i < ASCII_SIZE].credit);
}
fclose(fp);
printf("数据保存成功!\n");
}
int main() {
int choice;
; i++) {
table[i] = m;
}
for (int i = 0; i < m - 1; // 从文件中读取数据
FILE *fp;
int i, j;
fp = fopen("data.txt", " i++) {
table[pattern[i]] = m - i - 1;
}
// 在文本串中查找模r");
if (fp != NULL) {
fscanf(fp, "%d %d", &num_students, &num_courses);
for式串
int i = m - 1;
while (i < n) {
int j = m - 1;
(i = 0; i < num_students; i++) {
fscanf(fp, "%d %s %s %d %d", while (text[i] == pattern[j]) {
if (j == 0) {
return i;
}
i--;
&students[i].id, students[i].name, students[i].major, &students[i].grade, &students[i].class);
j--;
}
i += table[text[i]];
}
return -1;
}
int main() {
char text[MAX_LEN for (j = 0; j < num_courses; j++) {
fscanf(fp, "%f", &students[i].scores[j]);
], pattern[MAX_LEN];
cin >> text >> pattern;
int n = strlen(text), m = strlen(pattern);
int pos = H }
}
for (i = 0; i < num_courses; i++) {
fscanf(fp, "%d %s %orspool(text, pattern, n, m);
cout << pos << endl;
return 0;
}
```
这段代码中f", &courses[i].id, courses[i].name, &courses[i].credit);
}
fclose(fp);
printf("数据,我们首先构建了坏字符表,然后在文本串中查找模式串。如果模式串存在读取成功!\n");
}
// 显示菜单
do {
show_menu();
printf("请输入您要选择于文本串中,我们就返回模式串首次出现的位置;否则,返回-1。您可以将的操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
init_students();
这段代码复制到您的C++开发环境中进行编译和运行,也可以根据自己的 break;
case 2:
init_courses();
break;
case 3:
input_scores();
break;
case需要进行改进和调整。
阅读全文