Sunday算法模板
2018-06-17 22:41:41来源:未知 阅读 ()
算法举例
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int wei[301]={0}; 6 int ans=0,lend,lenc,tot=0;//tot用于统计匹配次数,便于直观地与其他算法比较 7 char c[10001],d[10001]; 8 void pei() 9 { 10 int w=0;//记录d匹配失败以后向右移动的数量 11 while(w+lend<=lenc) 12 { 13 int i=0;//正在匹配的位数 14 bool f=false;//默次数认匹配成功 15 while(i<=lend && f==false) 16 { 17 if(c[i+w]!=d[i]) 18 f=true;//匹配失败 19 i++;tot++;// 匹配下一位,匹配次数+1 20 } 21 if(f==false) 22 {ans++; 23 cout<<i<<endl; 24 w++;}//当匹配成功的话就让b串整体右移一位,与a串的下一位进行匹配 25 else//匹配失败 26 { 27 i=lend+1;// 直接匹配a串中b串再次出现的位置 28 if(wei[c[i+w]]==-1) 29 w=w+i+1;//没有出现过得话,就让b串整体右移lend+1位 30 else w=w+i-wei[c[w+i]];//如果出现过的话就跳到出现位置? 31 } 32 } 33 return; 34 } 35 int main() 36 { 37 gets(c); 38 gets(d); 39 lenc=strlen(c)-1; 40 lend=strlen(d)-1; 41 for(int i=0;i<=300;++i)wei[i]=-1; 42 for(int i=0;i<=lend;++i) 43 wei[d[i]]=i;//记录每一个字符出现的位置 44 pei(); 45 if(ans) 46 cout<<ans<<endl<<tot; 47 else cout<<"mission failed"; 48 return 0; 49 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ rand函数 2020-06-10
- C++冒泡排序 (基于函数模板实现) 2020-05-31
- C++ 模板类vector 2020-05-31
- C++ 模板类array 2020-05-31
- C++ 模板类vector 2020-05-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash