标签:pac bsp code emma sunday failed 数组 核心 har
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 }
标签:pac bsp code emma sunday failed 数组 核心 har
原文地址:http://www.cnblogs.com/zwfymqz/p/6788749.html