博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1200
阅读量:5109 次
发布时间:2019-06-13

本文共 2017 字,大约阅读时间需要 6 分钟。

/*rabin-karp算法基本思想是:把该字符集当成一个整数来看待比较字符串转化的整数来判断两个字符串是否相等对于这个题目,有几个疑问,N如果很大,那么int不就超了嘛,可是却能AC.理论上 应该去摸一个大质数的*/// include file#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;// typedeftypedef long long LL;typedef unsigned long long ULL;// #define read freopen("in.txt","r",stdin)#define write freopen("out.txt","w",stdout)#define FORi(a,b,c) for(int i=(a);i<(b);i+=c)#define FORj(a,b,c) for(int j=(a);j<(b);j+=c)#define FORk(a,b,c) for(int k=(a);k<(b);k+=c)#define FORp(a,b,c) for(int p=(a);p<(b);p+=c)#define FF(i,a) for(int i=0;i<(a);i+++)#define FFD(i,a) for(int i=(a)-1;i>=0;i--)#define Z(a) (a<<1)#define Y(a) (a>>1)const double eps = 1e-6;const double INFf = 1e10;const int INFi = 1000000000;const double Pi = acos(-1.0);template
inline T sqr(T a){return a*a;}template
inline T TMAX(T x,T y){ if(x>y) return x; return y;}template
inline T TMIN(T x,T y){ if(x
inline void SWAP(T &x,T &y){ T t = x; x = y; y = t;}template
inline T MMAX(T x,T y,T z){ return TMAX(TMAX(x,y),z);}// code begin#define MAXN 16000001int N,NC;char in[20000000];int len;bool hash[MAXN];int asc[300];int ans;// string search algorithmvoid SSA_Rabin_Karp(){ memset(hash,0,sizeof(hash)); int cur = 0; int first = 1; FORi(0,N,1) { cur = cur*NC+asc[in[i]]; first = first*NC; } first = first/NC; // FORi(0,len-N+1,1) { if(!hash[cur]) { hash[cur]=true; ans++; } if(i+N>=len) break; cur = (cur - asc[in[i]]*first)*NC+asc[in[i+N]]; }}int main(){ read; write; while(scanf("%d %d",&N,&NC)!=-1) { //此处是NC进制 scanf("%s",in); // 首先把相应的字符对应于一个0~NC-1 int id = 0; len = strlen(in); memset(asc,-1,sizeof(asc)); FORi(0,len,1) { if(asc[in[i]]==-1) asc[in[i]] = id++; } // ans = 0; SSA_Rabin_Karp(); printf("%d\n",ans); } return 0;}

转载于:https://www.cnblogs.com/ac2012/archive/2011/03/22/1992010.html

你可能感兴趣的文章
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>
MyBaits动态sql语句
查看>>
HDU4405(期望DP)
查看>>
拉格朗日乘子法 那些年学过的高数
查看>>
vs code 的便捷使用
查看>>
Spring MVC @ResponseBody返回中文字符串乱码问题
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JS 中的跨域请求
查看>>
JAVA开发环境搭建
查看>>
mysql基础语句
查看>>
Oracle中的rownum不能使用大于>的问题
查看>>
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>