链接:http://acm.hdu.edu.cn/showproblem.php?pid=4552
题目中文,就不解释了
大部人分都是这么写的,我在代码里稍微详细地做了下解释,如果理解起有点模糊不妨纸上模拟一下
#include<stdio.h>
#include<string.h>
#define MAXN 100010
char str[MAXN];
int main()
{
int i,j,k,len;
while(scanf("%s",str)!=EOF)
{
len=strlen(str);
int ans=0;
for(i=0;i<len;i++)
for(j=0,k=i;j<len;j++,k++)
if(str[j]!=str[k])
break;
else
ans++;
//从k开始找能和str从头开始最大匹配的字符串,长度为j,而这个从头开始到j的
//子串包含j个长度从1到j的子串,并且都能和从k开始的长度为j的子串中对应长度的子串匹配
printf("%d\n",ans%256);
}
return 0;
}