随笔分类 - Kmp
摘要:给两个数组a , b,并给一个间隔值p。问在间隔值p下b在中有多少个匹配。 比如a数组为1 2 2 4 3,b数组为1 2 3,那么在间隔值为2的情况下有一个匹配。 把a数组中可以作为开头的所有间隔数字比如2可以开头的数字是1或者2,3可以开头的数字是1、2、3取出来。 然后做p次kmp即可。 //
阅读全文
摘要:题意:给两个字符串s1与s2,让s1循环移位看s2能否能成为s1的子串。 题解:让s1增长一倍,看s2是否是s1的子串。 代码: #include <cstdio>#include <cstring>int next[110000];char a[210000],b[110000];void Get
阅读全文
摘要:题意:输入一个字符串,问长度大于2的所有从首元素开始的子串是否为循环串,是的话循环了几次。 题解:用Kmp算法求出每个i的next【i】,并设t=i-next【i】,if(i%t==0&&i/t>1)。则该子串为循环串并且循环次数为i/t。 代码: #include <string.h>#inclu
阅读全文

浙公网安备 33010602011771号