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 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值