永发信息网

大神们问一道C语言题目

答案:1  悬赏:50  手机版
解决时间 2021-02-11 07:52
大神们问一道C语言题目
最佳答案
//满意,还望多多打赏
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(){
char str1[1000],str2[1000];
printf("请输入第一个字符串:");
gets(str1);
printf("请输入第二个字符串:");
gets(str2);
int i,j,k,len1,len2,max,x,y;
len1 = strlen(str1);
len2 = strlen(str2);
int **c = new int*[len1+1];
for(i = 0; i < len1+1; i++)
c[i] = new int[len2+1];
for(i = 0; i < len1+1; i++)
c[i][0]=0; //第0列都初始化为0
for(j = 0; j < len2+1; j++)
c[0][j]=0; //第0行都初始化为0
max = -1;
for(i = 1 ; i < len1+1 ; i++){
for(j = 1; j < len2+1; j++){
if(str1[i-1]==str2[j-1]) //只需要跟左上方的c[i-1][j-1]比较就可以了
c[i][j]=c[i-1][j-1]+1;
else //不连续的时候还要跟左边的c[i][j-1]、上边的c[i-1][j]值比较,这里不需要
c[i][j]=0;
if(c[i][j]>max){
max=c[i][j];
x=i;
y=j;
}
}
}

//输出公共子串
char s[1000];
k=max;
i=x-1,j=y-1;
s[k--]='\0';
while(i>=0 j>=0){
if(str1[i]==str2[j]){
s[k--]=str1[i];
i--;
j--;
}
else //只要有一个不相等,就说明相等的公共字符断了,不连续了
break;
}
printf("最长公共子串为:");
puts(s);
for(i = 0; i < len1+1; i++) //释放动态申请的二维数组
delete[] c[i];
delete[] c;
system("pause");
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大岛优子在真假学园2出场是哪些集?
大连生育险要交多长时间才能给报销
【男人动情和动心的区别】请解释这两个词的意
美宜佳NO.7279在哪里啊,我有事要去这个地方
空调墙洞里好像有鸟死了,风吹出来很腥臭,对人
在庙里烧香,从上面点燃的,之后中部燃了,把
康慧贝奶粉怎么样
可爱可亲母婴生活馆咸阳分店地址在哪,我要去
土豆丝怎么炒才会脆
-Could you tell me something about that bo
2017年以后最好发展的职业
最终开辟了沿非洲海岸由大西洋进入印度洋航线
雪中飞我想知道这个在什么地方
一个老妇人手拿莲花猜一成语
炉石传说冠军的试炼卡包和经典卡包哪个好
推荐资讯
江西省龙南开发区二区这个地址在什么地方,我
阴阳师神龛今天晚上零点会更新什么式神?
家常鹅肉有什么好的做法?
铜丝灼热后插入什么物质能使铜丝变红 并且铜
请教不同寺庙居士之间的称呼问题
再炒中国的股票真的要死人了
2017年广东自考毕业证什么时候可以领取,深圳
1973年阴历12月6日五行属什么
大仙的说法,燕子在屋檐下搭窝好吗
常吃鸽子有啥好处
我现在学美发那人比较笨但是很认学我要花费多
七牌万纯足银手镯广告词
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?