题目链接
https://www.dotcpp.com/oj/contest4207_problem4.html
题目描述
现代诗如蚯蚓
断成好几截都不会死
字符串断成好几截
有可能完全一样
请编写程序
输入字符串
输出该字符串最多能断成多少截完全一样的子串
样例说明
最多能断成四个”abc”,也就是abc重复四遍便是原串
同时也能断成两个”abcabc”
最坏情况是断成一个原串”abcabcabcabc”
输入
一行,一个字符串
数据规模和约定
字符串长度< =1000
输出
一行,一个正整数表示该字符串最多能断成的截数
样例输入
abcabcabcabc
样例输出
4
解题思路
一:本题可以从第一个字符向后对比,为先是一个为一段,若不对,则两个,依次向后推。
二:当全部复合时,则为最大的段数
代码
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,k=0,t;
char a[10000],b[10000],c[10000];
gets(a);
int len=strlen(a);
for(i=0;i<len;i++)
{
t=0;
k=0;
for(j=i+1;j<len;j++)
{
if(a[t]==a[j])//进行对比
{
k++;//符合则复合的字母数加1
t++;
if(t==i+1)//如果一段的下标达到最大,则重置下标
{
t=0;
}
}
else
{
k=0;
break;
}
}
if((k==len-i-1)&&len%(i+1)==0)//判断是否全部符合
{
printf("%d",len/(i+1));
break;
}
}
return 0;
}