KMP与循环节相关题目
2024-08-28 22:41:38
HDU 3746 Cyclic Nacklace ( KMP求最小循环节 )
len - nextval[len]即为最小循环节长度。
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm> using namespace std; const int MAXN = ;
const int INF = << ; char str[MAXN];
int nextval[MAXN];
int len; void getNext( char s[], int next[] )
{
int length=len;
int i=,j=-;
next[]=-;
while(i<length)
{
if(j==-||s[i]==s[j])
{
++i;
++j;
next[i]=j;
}
else
j=next[j];
}
} int main()
{
int T;
scanf( "%d", &T );
while ( T-- )
{
scanf( "%s", str );
len = strlen(str);
getNext( str, nextval );
int sub = len - nextval[len];
if ( sub != len && len % sub == ) puts("");
else printf( "%d\n", sub - ( nextval[len]%sub ) );
}
return ;
}
HDU 1358 Period
题意:若某串的前i个字符是循环串,输出i以及循环节出现的次数。
做法跟上一题差不多
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm> using namespace std; const int MAXN = ; char str[MAXN];
int nextval[MAXN];
int len; void getNext( char s[], int next[] )
{
int length=len;
int i=,j=-;
next[]=-;
while(i<length)
{
if(j==-||s[i]==s[j])
{
++i;
++j;
next[i]=j;
}
else
j=next[j];
}
} int main()
{
int cas = ;
while ( scanf( "%d", &len ), len )
{
scanf( "%s", str );
getNext( str, nextval );
printf( "Test case #%d\n", ++cas );
for ( int i = ; i <= len; ++i )
{
int sub = i - nextval[i];
if ( i / sub > && i % sub == )
{
printf("%d %d\n", i, i / sub );
}
}
puts("");
}
return ;
}
POJ 2406 Power Strings(求循环串的最大循环周期)
注意这组数据:aabaabaa
显然答案是:1
#include <cstdio>
#include <cstring>
#include <cstdlib> const int MAXN = ; char str[MAXN];
int nextval[MAXN];
int len; void getNext(char s[],int next[])
{
int length=len;
int i=,j=-;
next[]=-;
while(i<length)
{
if(j==-||s[i]==s[j])
{
++i;
++j;
next[i]=j;
}
else
j=next[j];
}
} int main()
{
while ( scanf( "%s", str ) == && str[] != '.' )
{
len = strlen(str);
getNext( str, nextval );
int sub = len - nextval[len];
if ( len % sub == ) printf("%d\n", len / sub );
else printf("1\n");
}
return ;
}
最新文章
- Ring3无敌进程让你的进程变得和smss.exe一样支持64
- Linux C _exit函数与exit函数的联系与区别
- PHP学习心得(三)——处理表单
- 反对网抄,没有规则可以创建目标";install"; 靠谱解答
- Excel 公式(细节若干)
- linux文件系统拓展属性
- AngularJs 笔记
- python笔记一(语言简介、解释器、输入输出)
- 关于pycharm有时候提取不了form表单POST提交的数据
- [P4318] 完全平方数
- tomcat多项目
- 【TensorFlow学习笔记 】name_socpe variable_scope
- 复刻smartbits的国产网络测试工具minismb-如何测试路由器
- python3.4连接和读取oracle数据表
- python+selenium+requests爬取我的博客粉丝的名称
- NodeJS学习笔记三
- PHP安全性漫谈
- 让gcc和gdb支持intel格式的汇编
- Java并发编程:并发容器之ConcurrentHashMap(转)
- java中枚举类的实际应用
热门文章
- B1954 The xor-longest Path
- cudaMallocPitch()
- ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!
- WIN10下解决Failed installing tomcat X service
- Maven - pom.xml常用元素
- 日期格式兼容iOS
- tp5.0初入
- Apache安装之后,在浏览器输入ip无法访问
- Android面试收集录1 Activity+Service
- TouTiao开源项目 分析笔记13 最后一个订阅号的实现主页面