链接: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;
}
本文提供了一道来自HDU在线评测系统的编程题(编号4552)的解答思路及C语言实现代码。该题要求找出字符串中所有可能的相同子串并返回特定条件下匹配子串的数量。
1512

被折叠的 条评论
为什么被折叠?



