字符串哈希之Rabin-Karp,poj1200
Posted 请叫我凯凯大人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串哈希之Rabin-Karp,poj1200相关的知识,希望对你有一定的参考价值。
#include<cstdio> #include<iostream> #include<cstring> #include<string> using namespace std; int array[16000000]; int hash[256]; char s[160000000]; #define mem(a) memset(a,0,sizeof(a)) int main() { int n,m; while(scanf("%d%d",&n,&m)==2) { cin>>s; int cnt=0;int len=strlen(s); mem(array); mem(hash); for(int i=0; i<len; i++) { if(hash[s[i]]==0) hash[s[i]]=cnt++; } int res=0; for(int i=0; i+n<=len; i++) { int sum=0; for(int j=i; j<i+n; j++) { sum*=m; sum+=hash[s[j]]; } if(!array[sum]) { res++; array[sum]=1; } } cout<<res<<endl; } return 0; }
以上是关于字符串哈希之Rabin-Karp,poj1200的主要内容,如果未能解决你的问题,请参考以下文章