上午我用了Rabin-Karp算法做的。基本的数据可以测试通过,但是一提交就WA。偶滴天啊,我不知道错在哪啊。。我是非专业的。。呜呜。找了半天找不出。算了。看人家都是用KMP做的,那我下午就用KMP写一个吧。一定把它拿下!!哼哼

Rabin-Karp:

#include <iostream>#include <fstream>#include <math.h>#include <string.h>

using namespace std;

#define M 16381*4733+1int nCount;

void Rabin_Karp(char*T,char* W,int d,int q ){//搜索W在T中的位置//参数d:字母表的进制,即字母表的元素个数//参数q:一个比较大的素数,只需d*q<字长    int n=strlen(T);int m=strlen(W);if(n<m) return;int i;    __int64 h=1;for(i=1; i<=m-1; i++)  //计算h        h=(h*d)%q;        __int64 w=0,t=0; //预处理,计算P,t0    for(i=0; i<m; i++)    {        w=((d*w+W[i])%q);        t=((d*t+T[i])%q);    }int s;for(s=0; s<n-m+1; s++)   //匹配    {if(w==t)        {for(i=0; i<m; i++)   //进一步验证            {if(W[i]!=T[s+i])break;            }if(i==m)                    {                         nCount++;                    }        }if(s<n-m)          t=(d*(t-T[s]*h)+T[s+m])%q;  //计算ts+1    }}

int main(){int n;char W[10001];char T[1000001];    freopen("acm.txt","r",stdin);    scanf("%d",&n);    getchar();while(n--)    {            gets(W);            gets(T);            nCount=0;        Rabin_Karp(T,W,27,M);        printf("%d\n",nCount);    }return 0;

}

KMP: AC的。

#include <iostream>#include <fstream>#include <string.h>

using namespace std;#define N 10001#define M 1000001int next[N];int nCount;

void get_next(char* str){int i=0,j=-1,len=strlen(str);    next[i]=j;while(i<len)    {while(j>=0 && str[i]!=str[j]) j=next[j];        i++;j++;        next[i]=j;    }}

void kmp_search(char *T,char *W){int i=0,j=0,len1=strlen(T),len2=strlen(W);while(i<len1)    {while(j>=0 && T[i]!=W[j]) j=next[j];        i++;j++; if(j==len2)        {          nCount++;          j=next[j];        }    }}

int main(){int n;char W[N];char T[M];    freopen("acm.txt","r",stdin);    scanf("%d",&n);    getchar();while(n--)    {        scanf("%s",W);            scanf("%s",T);           memset(next,0,sizeof(next));        nCount=0;        get_next(W);        kmp_search(T,W);            printf("%d\n",nCount);    }    

return 0;}

POJ 3461 还是两种方法相关推荐

  1. POJ 4151/北大百练 4151 电影节 题解(两种方法)贪心算法基础

    POJ4151 电影节 总时间限制: 1000ms 内存限制: 65536kB 描述: 大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看( ...

  2. SQL Server中灾难时备份结尾日志(Tail of log)的两种方法

    简介 在数据库数据文件因各种原因发生损坏时,如果日志文件没有损坏.可以通过备份结尾日志(Tail of log)使得数据库可以恢复到灾难发生时的状态. 例如: 上图中.在DB_1中做了完整备份,在Lo ...

  3. C++/C++11中用于定义类型别名的两种方法:typedef和using

    类型别名(type alias)是一个名字,它是某种类型的同义词.使用类型别名有很多好处,它让复杂的类型名字变得简单明了.易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的.在C++中,任何 ...

  4. jquery-12 折叠面板如何实现(两种方法)

    jquery-12 折叠面板如何实现(两种方法) 一.总结 一句话总结:1.根据点击次数来判断显示还是隐藏,用data方法保证每个元素一个点击次数:2.找到元素的下一个,然后toggle实现显示隐藏. ...

  5. java 匿名list,java创造匿名对象的两种方法

    在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...

  6. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

  7. Response.Redirect 打开新窗体的两种方法

    普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...

  8. centos下两种方法安装git

    centos 5 64位下两种方法安装git 这里来给大家介绍下编译安装和yum安装git.   系统:centos 5.5 64位   需要的软件包:git-latest.tar.gz epel-r ...

  9. mysql创建库几种方法_MySQL创建数据库的两种方法

    本文为大家分享了两种mysql创建数据库的方法,供大家参考,具体内容如下 第一种方法:使用 mysqladmin 创建数据库使用普通用户,你可能需要特定的权限来创建或者删除 mysql 数据库. 所以 ...

最新文章

  1. ecshop模板smarty foreach详解 [ECshop]
  2. U-net实现医学图像分割
  3. 我遇到的优秀年轻人都有哪些特质
  4. 端口以及服务常用cmd
  5. 一般图带权多重匹配(欧拉图+最小费用流)
  6. django QuerySet对象转换成字典对象
  7. 【2016年第6期】科研数据的开放:进展、模式与新探索
  8. 开源代码准确率99%+,人脸识别问题真的被解决了吗?
  9. MySQL 自定义函数设置执行时间_mysql自定义函数计算时间段内的工作日(支持跨年)...
  10. Airflow 中文文档:常见问题
  11. Linux进程间通信[转]
  12. 面向串口编程java_Java串口编程例子
  13. n1怎么进入线刷模式_怎么用斐讯NI天天链刷机成电视机顶盒教程
  14. P1350 车的放置
  15. RT thread 设备驱动组件之USART设备
  16. Python入门书 - 简明Python教程(A Byte of Python)
  17. aspectjweaver的作用
  18. matlab命令行窗口显示长度设置_MATLAB的命令窗口、图形窗口
  19. imdb数据集电影评论分类
  20. html旋转360度特效,CSS3图片旋转特效(360/60/-360度)?

热门文章

  1. 3G网络关闭,4G还会远吗?
  2. 什么才是程序员摸鱼的最高境界?
  3. 去了两家外包公司,颠覆了我的认知!
  4. 来了个假阿里? | 每日趣闻
  5. Jmeter(一)http接口添加header和cookie --转载
  6. Netty堆外内存泄露排查与总结
  7. 【原】东拼西凑PBR(1):PBR基础
  8. 关于图片上传的个人摘要
  9. MySQL 复制 主键冲突
  10. 论文阅读--PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection