【问题描述】编写C/C++程序,实现蛮力字符串匹配 【输入形式】文本串和模式串(分开输入) 【输出形式】匹配成功,输出模式首字符对应文本的字符下标(从0开始);失败输出-1 同时输出字符比较次数 【样例输入】0001000000(文本) 100(模式) 【样例输出】3 6 (成功案例: 即匹配位置与比较次数,中间用空格隔开)
时间: 2024-02-17 09:02:42 浏览: 71
以下是一个实现蛮力字符串匹配的 C++ 程序,可以满足您的需求:
```c++
#include <iostream>
#include <string>
using namespace std;
int bruteForceSearch(string T, string P, int& count) {
int n = T.length(); // 主串长度
int m = P.length(); // 模式串长度
for (int i = 0; i <= n - m; i++) { // 枚举主串中所有可能出现模式串的起始位置
int j = 0;
while (j < m && T[i+j] == P[j]) { // 模式串和主串中对应位置依次比较
count++; // 记录比较次数
j++;
}
if (j == m) { // 如果完全匹配,返回模式串在主串中的位置
return i;
}
}
return -1; // 如果匹配失败,返回-1
}
int main() {
string T, P;
cout << "请输入文本串:";
cin >> T;
cout << "请输入模式串:";
cin >> P;
int count = 0;
int pos = bruteForceSearch(T, P, count);
if (pos != -1) {
cout << "匹配成功,模式串在主串中的位置是:" << pos << endl;
cout << "字符比较次数为:" << count << endl;
} else {
cout << "匹配失败!" << endl;
}
return 0;
}
```
输入样例:
```
请输入文本串:0001000000
请输入模式串:100
```
输出样例:
```
匹配成功,模式串在主串中的位置是:3
字符比较次数为:6
```
阅读全文
相关推荐


















