POJ-2406(KMP)
来源:互联网 发布:遗传算法入门经典实例 编辑:程序博客网 时间:2024/05/21 09:28
题目:http://poj.org/problem?id=2406
next[j] = k表示p[0,k-1] = p[j-k,j-1],即前k个字符与j-k~j-1这k个字符时完全一样的,注意到两段重合的部分为j-k~k-1,长度为(k-1) - (j-k) + 1 = 2k-j,前者还包含p[0,j-k-1]个字符,后者还包含p[k,j-1]个字符,长度为j-k,当j是j-k的整数倍时,即j = m * (j-k)时,有p[0,j-1] = p[0,j-k-1] ^ m,实际上画个图我们就能直观地看到这一结果了
#include <stdio.h>#include <string.h>#define MAX_LEN 1000000char p[MAX_LEN + 1];int next[MAX_LEN + 1];void getNext(){ int i = 0, j = -1; next[0] = -1; while(p[i]){ if(j == -1 || p[i] == p[j]){ ++i; ++j; next[i] = j; } else j = next[j]; }}int solve(){ int len = strlen(p), t; getNext(); t = next[len]; if(t && len % (len - t) == 0) return len / (len - t); else return 1;}int input(){ gets(p); return strcmp(p, ".");}int main(){ while(input()) printf("%d\n", solve()); return 0;}
0 0
- poj 2406(kmp)
- POJ-2406(KMP)
- POJ 2406(KMP) 证明
- poj 2406:Power Strings(KMP)
- poj 2406 power string(KMP)
- poj 2406 Power Strings(kmp算法)
- POJ 2406 Power Strings(kmp)
- POJ 题目2406 Power Strings(KMP)
- POJ 2406 Power String(KMP)
- POJ 2406 Power Strings(kmp)
- poj 2406 Power Strings (KMp)
- POJ 2406 Power Strings (KMP)
- POJ 2406 Power Strings(KMP)
- poj-2406-Power Strings(KMP)
- poj 2406 Power Strings(kmp)
- poj 2406Power Strings(KMP入门)
- poj 2406 Power Strings(KMP || 暴力)
- POJ 2406(KMP next数组性质)
- 一种简单有效的锂电池充电均衡电路
- centos mount nfs-mount: wrong fs type, bad option
- 从腾讯layoutLeft/layoutRight 小谈CSS样式命名
- UF超滤膜:超滤膜在水处理领域的主要应用
- 各类程序员学习路线图
- POJ-2406(KMP)
- 抽奖系统分析
- Gradle的安装使用
- Linux下mysql数据库服务管理与命令行工具
- Gitlab配置ssh连接
- 乌蝇诞生纪念
- TIJ描述的多线程并发
- android listview 异步加载图片并防止错位
- 静态体、主函数块、构造体、构造函数块的执行优先顺序