BM串匹配
来源:互联网 发布:js数字滚动抽奖 编辑:程序博客网 时间:2024/06/04 17:41
#include<iostream>
using namespace std;
int dist(char ch,char T[])
{
int i=T[0]-1;
while(i>0)
{
if(T[T[0]]==ch)return (int)T[0];
if(ch==T[i])return (int)(T[0]-i);
i--;
}
return (int)T[0];
}
int BM(char S[],char T[])
{
int i=T[0];
int j;
while(i<=S[0])
{
j=T[0];
while(j>0&&S[i]==T[j])
{
j--;
i--;
}
if(j==0) return i+1;
else
{
i=i+dist(S[i],T);
}
}
return 0;
}
int main()
{
char *S=new char[];
char *T=new char[];
int i=1;
char ch;
cout<<"输入主串,以*结束"<<endl;
while(cin>>ch,ch!='*')
{
S[i]=ch;
i++;
}
S[0]=i-1;
i=1;
cout<<"输入子串,以*结束"<<endl;
while(cin>>ch,ch!='*')
{
T[i]=ch;
i++;
}
T[0]=i-1;
int position=BM(S,T);
if(position==0)cout<<"匹配失败"<<endl;
else cout<<"匹配成功位置"<<position<<endl;
return 0;
}
using namespace std;
int dist(char ch,char T[])
{
int i=T[0]-1;
while(i>0)
{
if(T[T[0]]==ch)return (int)T[0];
if(ch==T[i])return (int)(T[0]-i);
i--;
}
return (int)T[0];
}
int BM(char S[],char T[])
{
int i=T[0];
int j;
while(i<=S[0])
{
j=T[0];
while(j>0&&S[i]==T[j])
{
j--;
i--;
}
if(j==0) return i+1;
else
{
i=i+dist(S[i],T);
}
}
return 0;
}
int main()
{
char *S=new char[];
char *T=new char[];
int i=1;
char ch;
cout<<"输入主串,以*结束"<<endl;
while(cin>>ch,ch!='*')
{
S[i]=ch;
i++;
}
S[0]=i-1;
i=1;
cout<<"输入子串,以*结束"<<endl;
while(cin>>ch,ch!='*')
{
T[i]=ch;
i++;
}
T[0]=i-1;
int position=BM(S,T);
if(position==0)cout<<"匹配失败"<<endl;
else cout<<"匹配成功位置"<<position<<endl;
return 0;
}
- BM串匹配
- BM字符串匹配算法
- BM字符串匹配算法
- 字符串匹配-BM算法
- BM模式匹配算法
- BM字符串匹配算法
- 字符串匹配:KMP、BM
- BM模式匹配算法
- BM字符串匹配算法
- BM字符串匹配算法
- BM匹配算法
- 数据结构(c++) 串的匹配BF->KMP->BM算法
- 字符串匹配之BM算法
- 字符串匹配之BM算法
- 字符串匹配(BF,KMP,BM)
- BM算法 字符串匹配算法
- 字符串匹配 — BM算法
- 4.4模式匹配-BM算法
- 基本WCF编程
- Ubuntu 下安装使用 OpenSSH
- Hadoop RPC机制
- 处理基本交互
- P/Invoke应用
- BM串匹配
- 网站压力测试
- KMPC串匹配
- 俄式乘法
- jquery实现限输入整数,全选反选,批量删除,设置排序
- 网站上线前测试工作
- iPhone 下应用中发送短信
- 块级元素和级联元素
- 关于c语言中void*的解释