poj_1200_Crazy Search_hash
来源:互联网 发布:同业拆借 知乎 编辑:程序博客网 时间:2024/06/16 08:00
题目大意
在一个字符串中找到长度为n的不同子串的个数
思路
可以将每一个子串的化成一个独一无二的数存在hash中,然后暴力一下判重就可以了
O(n*m)
#include <stdio.h>#include <string.h>#include <stdlib.h>#define M 16000000using namespace std;int h[M];char s[M];int a[100000];int main(){ int n,nc; scanf("%d%d",&n,&nc); scanf("%s",&s); int len=strlen(s); int x=0; for (int i=0;i<=len-1;i++) { if (a[s[i]]==0) { x++; a[s[i]]=x; } } int ans=0; for (int i=0;i<len-n+1;i++) { int st=0; for (int j=i;j<i+n;j++) st=st+st*nc+a[s[j]]; if (h[st]==0) { ans++; h[st]=1; } } printf("%d\n",ans); return 0;}
1 0
- poj_1200_Crazy Search_hash
- C字符串
- Exception thrown in catch and finally clause
- PHP单引号与双引号区别记录
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- 降雷皇 【NOIP2017提高组模拟12.10】
- poj_1200_Crazy Search_hash
- 三种设置session的失效时间
- Ubuntu等Linux系统显卡性能测试软件 Unigine 3D
- Android下的帧动画
- 172.16.82.0/25的含义,IP段,掩码
- web中常见的bug调试总结
- gabor变换人脸识别的python实现,att_faces数据集平均识别率99%
- Linux文件权限学习笔记
- ln 命令