HDU-3746-KMP理解失配
2015-08-14 16:45
330 查看
这个有点意思,要理解失配数组
题意是要计算出需要构造成循环节相连的最小个数
利用失配构造函数求出单个循环节,然后计算出需要的加上的珠子个数
题意是要计算出需要构造成循环节相连的最小个数
利用失配构造函数求出单个循环节,然后计算出需要的加上的珠子个数
#include <cstdio> #include <algorithm> #include <cstring> #include <ctype.h> #include <cstdlib> #include <stack> #include <set> #include <map> #include <queue> #include <string> #include <cmath> using namespace std; int T; char P[100100]; int solve(char *P) { int m = (int)strlen(P); int f[m+10]; memset(f,-1,sizeof f); int i = 0,j = -1; while(i != m) { if(j == -1||P[i] == P[j]) f[++i] = ++j; else j = f[j]; } int k = m-f[m]; return (k != m && f[m]%k==0) ? 0 : k-f[m]%k; } int main() { scanf("%d",&T); while(T--) { scanf("%s",P); printf("%d\n",solve(P)); } }
相关文章推荐
- 一个整形十进制数值存放在数组中的形式
- android中利用animation实现Image的循环移动
- Python 学习之<Requests入门>
- android权限
- celery beat实战
- iOS终止函数exit
- 使用Canvas基于手势可以使树秋千
- HDU1251——trie模板——统计难题
- PHP数组处理函数的使用array_map(三)
- linux文件查找
- 智渔课堂官方免费教程四十二 :Java流之字节流 输入流和输出流 InputStream和OutputStream
- 【cJson】JSON的基本概念
- oci runc
- js简易年历
- JS学习十四天----服务器端执行JS代码
- XtraGrid 加全选列
- jsp文件ajax不执行
- spring MVC Controller 实现接口后,不能解析@Controller注解问题
- 可展开/折叠的Android TextView:ExpandableTextView
- Source Insight 3.X 插件新loader发布