欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

poj 1200

发布时间:2025/1/21 27 豆豆
生活随笔 收集整理的这篇文章主要介绍了 poj 1200 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

裸哈希,感觉oj的数据弱啊,如果N很大的话,内存就不够用,可能我没想明白?

#include <stdio.h> #include <string.h> const int maxn=16000010; char s[maxn]; int li[300]; short hash[maxn]; int tot; int main() {int N,NC;scanf("%d%d",&N,&NC);scanf("%s",s);int sl=strlen(s);int t=1,i,j;memset(hash,0,sizeof(hash));memset(li,0,sizeof(li));for(i=0;i<sl;i++){if(!li[s[i]])li[s[i]]=t++;//t只能从1开始}int sum;for(i=0;i<=sl-N;i++){sum=0;for(j=i;j<i+N;j++){sum=sum*NC+li[s[j]];//决定了只能从1开始,如果t为0,会出现不是同一串却有相同的hash值,而且要记住这个哈希函数,只要散列表足够大,这个哈希函数就不会产生冲突}if(!hash[sum]){hash[sum]=1;tot++;}}printf("%d\n",tot);return 0; }


 

转载于:https://www.cnblogs.com/lj-vs-lishimin/archive/2012/10/14/2774377.html

总结

以上是生活随笔为你收集整理的poj 1200的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。