UVA 455 Periodic Strings
题意就是求输入字符串的最小组成序列,比如abcabcabc,是abc重复三次得到的,所以最小组成序列是abc,值为3,
注意:如果是abc,不能由序列重复得到,那么值为本身=3,
如果是aaa,就为a重复3次,值为1
1 #include "stdio.h" 2 #include "stdlib.h" 3 #include "string.h" 4 int isEqual(char const *str,int num) 5 { 6 int k,k1,k2,isequal=1; 7 char sub[80],curstr[80]; 8 memset(curstr,'\0',80); 9 strncpy(curstr,str,num);//必须初始化,不然会崩 10 // printf(" curstr=%s length;%d\n",curstr,strlen(curstr)); 11 for(k=0;k<strlen(str);k=k+num) 12 { 13 memset(sub,'\0',80);//必须初始化,不然会崩 14 strncpy(sub,str+k,num); 15 // printf(" k=%d sub=%s length:%d num=%d\n",k,sub,strlen(sub),num); 16 if(strcmp(sub,curstr)!=0) 17 { 18 // printf("return, k=%d\n",k); 19 return 0; 20 } 21 } 22 return 1; 23 } 24 int main() 25 { 26 int n,i,j,k,res,cur,min; 27 char str[80],str1[80],str2[80]; 28 scanf("%d",&n); 29 while(n--) 30 { 31 scanf("%s",str); 32 cur=strlen(str); 33 min=strlen(str); 34 for(i=strlen(str);i>0;i--) 35 { 36 if(strlen(str)%i==0) 37 { 38 // printf("i=%d\n",i); 39 //判断满足吗 40 if(isEqual(str,i)) 41 { 42 cur=i; 43 // printf(" cur=%d\n",cur); 44 } 45 if(cur<min) 46 { 47 min=cur; 48 } 49 } 50 } 51 printf("%d\n",min); 52 if(n!=0) 53 printf("\n"); 54 } 55 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步