HDU-3746 Cyclic Nacklace (活用KMP中next数组)
来源:互联网 发布:access sql 编辑:程序博客网 时间:2024/05/24 05:09
Cyclic Nacklace
题意,给你一个字符串,求再添加多少个字符可以成为一个循环字符串
题目链接
这道题的精髓就在于活用next数组
这道题以前做过,但是由于是看了题解,理解的不是很透彻
这次进行全面分析
这道题先求解next数组
而next数组的作用是用来求循环节的长度
循环节的长度为 len-next【i】
找到了循环长度了,那么看一下len中有多少个循环节,如果正好整数个,那么输出0
如果不是整除,那么缺多少补齐就可以了
注意~~~~~~~我的next数组和网上的代码稍微有些不一样·······具体输出next数组看一下不同
#include<stdio.h>#include<string>#include<iostream>#include<string.h>using namespace std;const int maxn=1000000+10;char a[maxn],b[maxn];int nextl[maxn];int abs(int a){ if(a<=0) return -a; else return a;}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%s",a); int len=strlen(a); memset(nextl,0,sizeof(nextl)); int i=0,j=1; nextl[0]=0; while(j<len) { if(a[i]==a[j]) { nextl[j]=i+1; i++,j++; } else if(a[i]!=a[j]&&i!=0) { i=nextl[i-1]; } else { j++; } }// for(int i=0;i<len;i++)// {// printf("%d ",nextl[i]);// }// printf("\n"); int z=len-nextl[len-1];// printf("%d\n",nextl[len-1]); if(len%z==0&&z!=len) printf("0\n"); else printf("%d\n",z-len%z); }}
阅读全文
0 0
- HDU-3746 Cyclic Nacklace (活用KMP中next数组)
- hdu 3746 Cyclic Nacklace(KMP中next数组的运用)
- HDU Cyclic Nacklace (KMP-next数组的利用)
- Cyclic Nacklace (kmp中next数组的运用)
- HDU 3746 Cyclic Nacklace (next数组)
- HDU 3746 Cyclic Nacklace(Next 数组性质)
- HDU 3746 Cyclic Nacklace 利用 KMP的next数组求循环节
- Cyclic Nacklace (kmp next数组的应用)
- hdu 3749 Cyclic Nacklace(kmp next数组获取循环节)
- hdu 3746 Cyclic Nacklace(KMP)
- hdu 3746 Cyclic Nacklace(KMP)
- HDU 3746 Cyclic Nacklace(KMP)
- HDU 3746 Cyclic Nacklace(KMP)
- HDU 3746 Cyclic Nacklace(KMP)
- hdu 3746 Cyclic Nacklace(kmp)
- HDU 3746 Cyclic Nacklace(kmp)
- hdu 3746 Cyclic Nacklace (kmp)
- hdu 3746 Cyclic Nacklace(kmp)
- ffmpeg一些东西设置
- C++中的异常处理开销(13)---《More Effective C++》
- 洛谷P2024 食物链 (POJ 1182)
- Androidbby
- java抽象类练习题
- HDU-3746 Cyclic Nacklace (活用KMP中next数组)
- 兔子路径规划
- 获取指定时间段内的日期 和 获取指定日期是星期几
- 求最长不下降序列并输出序列(动态规划)
- python3 json 与 对象之间的相互转换
- php调用python文件换脸 dlip+opencv+windows64系统
- win10、win7下关掉某个端口的进程
- MySQL 5.7 深度解析: 半同步复制技术
- linux下部署mysql数据库