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 ;
}

最新文章

  1. Ring3无敌进程让你的进程变得和smss.exe一样支持64
  2. Linux C _exit函数与exit函数的联系与区别
  3. PHP学习心得(三)——处理表单
  4. 反对网抄,没有规则可以创建目标&quot;install&quot; 靠谱解答
  5. Excel 公式(细节若干)
  6. linux文件系统拓展属性
  7. AngularJs 笔记
  8. python笔记一(语言简介、解释器、输入输出)
  9. 关于pycharm有时候提取不了form表单POST提交的数据
  10. [P4318] 完全平方数
  11. tomcat多项目
  12. 【TensorFlow学习笔记 】name_socpe variable_scope
  13. 复刻smartbits的国产网络测试工具minismb-如何测试路由器
  14. python3.4连接和读取oracle数据表
  15. python+selenium+requests爬取我的博客粉丝的名称
  16. NodeJS学习笔记三
  17. PHP安全性漫谈
  18. 让gcc和gdb支持intel格式的汇编
  19. Java并发编程:并发容器之ConcurrentHashMap(转)
  20. java中枚举类的实际应用

热门文章

  1. B1954 The xor-longest Path
  2. cudaMallocPitch()
  3. ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!
  4. WIN10下解决Failed installing tomcat X service
  5. Maven - pom.xml常用元素
  6. 日期格式兼容iOS
  7. tp5.0初入
  8. Apache安装之后,在浏览器输入ip无法访问
  9. Android面试收集录1 Activity+Service
  10. TouTiao开源项目 分析笔记13 最后一个订阅号的实现主页面