zoj 1905 || poj 2406 Power Strings

    技术2022-07-01  76

    水水~

     

    今天写了KMP,本来想找点KMP的题写,搜了个字符比较的这个。

     

    给你一个字符串,看最多有几个相等的子串。看题目吧,很好理解的。

     

    第一反应用KMP,后来觉得没必要啊。

     

    从1到len/2,如果是len的除数,就比较整个串是不是前i个,最简单的循环,有不匹配的就直接跳出来。

     

    嗨皮~/(^o^)/~今天A题啦~~

     

    #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <math.h> #define MAX 1000005 using namespace std; char str[MAX]; int len; int cmp(int pos) { int i = pos,k; while( i < len ) { for(k=0; k<pos; k++) if( str[i] == str[k] ) i++; else return 0; } return 1; } int main() { int i,j,flag; while( scanf("%s",str) != EOF && strcmp(str,".") ) { len = strlen(str); flag = -1; for(i=0; i<=len/2; i++) { if( len % (i+1) == 0 ) { if( cmp(i+1) ) { flag = len/(i+1); break; } } } if( flag != -1 ) printf("%d/n",flag); else printf("1/n"); } return 0; }  

     

     


    最新回复(0)