- #include<stdio.h>
- #include<string.h>
- void main()
- {
- char a[500],b[500];
- int array[500][500];
- int aLen,bLen;
- int i,j,max,m,n;
- printf("请输入第一个字符串:");
- while(scanf("%s",&a)!=EOF) //如果成功
- {
- printf("请输入第二个字符串:");
- scanf("%s",&b);
- aLen=strlen(a);
- bLen=strlen(b);
- for(i=0;i<bLen+1;i++)
- array[i][0]=0;
- for(i=0;i<aLen+1;i++)
- array[0][i]=0;
-
- for(i=1;i<=aLen;i++) //二维数组赋值
- {
- for(j=1;j<=bLen;j++) //i行j列
- {
- if(a[i-1]==b[j-1])
- {
- array[i][j]=array[i-1][j-1]+1;
- }
- else
- {
- array[i][j]=0;
- }
- }
-
- }
- //输出公共字符串
- max=array[0][0];
- for(i=1;i<=aLen;i++)
- {
- for(j=1;j<=bLen;j++)
- {
- if(max<array[i][j])
- {
- max=array[i][j];
- m=i;
- n=j;
- }
- }
- }
- //printf("重复最大个数max:%d 行下标m: %d 列下标n:%d",max,m,n);
- printf("最大子串为:");
- for(i=m-max;i<m;i++)
- {
- printf("%c",a[i]);
- }
-
- printf("\n");
- }
- }
复制代码 |