zoukankan      html  css  js  c++  java
  • POJ Oulipo (KMP)

    题目大意 : 在一个字符串中找出目标单词的个数

    代码:

          #include<iostream>
          #include<cstdio>
          #include<cstdlib>
          #include<cstring>
          #include<queue>
          #include<algorithm>
          #include<cmath>
          #include<map>
          using namespace std;
          #define INF 0x7fffffff
    
          char t[1000010],w[10010]; 
          int next[10010];
          void getnext(int wlen){
    	      int i,j;
    	      next[0] = 0;
    	      next[1] = 0;
    	      for(i=1;i<wlen;i++){
    		      j = next[i];
    		      while(j && w[i] != w[j]) j = next[j];
    		      if(w[i] == w[j]) next[i+1] = j+1 ;
    		      else   next[i+1] = 0 ;
     	      }
          }
    
          int KMP(){
    	      int i,j,tlen,wlen,cnt = 0;
    	      tlen = strlen(t);
    	      wlen = strlen(w);
    	      j = 0;
    	      getnext(wlen);
    	      for(i=0;i<tlen;i++){
    		      while(j && w[j] != t[i]) j = next[j];
    		      if(w[j] == t[i]) j++;
    		      if(j>=wlen)
    		          cnt ++;
    	      }
    	      return cnt ;
          }
    
          int main(){
    	      int  i,j,n,cnt;
    	      cin >> n;
    	      for(i=1;i<=n;i++){
    		      scanf("%s%s",w,t); 
    		      printf("%d
    ",KMP());
    	      }  
    
    	      return 0;
          }
    
  • 相关阅读:
    Banner实现无线轮播
    二维码生成
    自定义View圆环
    百度地图
    OkHttp解析
    自定义控件生成随机数
    OkHttp中文文档
    Da购物车
    Angular过滤器
    popupWindow
  • 原文地址:https://www.cnblogs.com/jxgapyw/p/4774025.html
Copyright © 2011-2022 走看看