您的位置:首页 > 其它

算法竞赛入门经典(刘汝佳)习题3-4 UVa455

2017-03-18 15:57 204 查看
dalao们好像30来行就解决了= =

//2017 3 1 P57 习题3-4 周期串
#include<stdio.h>
#include<string.h>
#define maxn 81

int main(void)
{
char str[maxn];
char temp[maxn];
memset(str, '\0', sizeof(str));
scanf("%s", str);

int len = strlen(str);//用户输入字符长度len
int res = 0;//周期
int count = 1;//统计周期出现次数

for(int i = 1;i < len;i++)
{
if(str[i] == str[0])
{
res = i / count;
int flag = 0;//判断变量
for(int j = 1;j < res;j++)
{
if(str[i + j] != str[j])//出现不同字符时,改变flag的值
{
flag = 1;
i += j;
break;
}
}
if(flag != 0)//不是一个周期 ,数据还原初始化
{
res = 0;
count = 1;
}
if(flag == 0)//是一个周期,次数+1
count++;

}
}
//得到初步周期
if(res != 0)//判断最后一个周期是否也成立
{
for(int j = len - res;j < len;j++)
{
if(str[j] != str[res - len + j])
{
res = 0;
break;
}
}
}
if(res == 0)
printf("%d\n",len);
if(res != 0)
printf("%d\n",res);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: