早教吧 育儿知识 作业答案 考试题库 百科 知识分享

跪求编程大神速速帮忙解决,算法设计判断单词接龙.汉语里面有词语接龙,如“喜大普奔->奔走相告”,在英文中由于英文单词长度不不一,有所变化,规定前一个单词尾部若干个字母与后一个单

题目详情
跪求编程大神速速帮忙解决,算法设计判断单词接龙.
汉语里面有词语接龙,如“喜大普奔->奔走相告”,在英文中由于英文单词长度不不一,有所变化,规定前一个单词尾部若干个字母与后一个单词的开头若干个字母相同,则接龙成功,如romantic, anticlimax两个单词可接龙,称’antic’ 为连接串,而committee,eerily,其连接串是’e’、’ee’,设计一个算法,判断两个词是否能够“接龙”成功,如果能接龙,则求取最大长度的“连接串”.选择擅长的程序设计语言,实现该算法并分析其算法复杂度.(单词由小写英文字母组成,最多不超过5000个字符).
例1.
输入:romantic //第1行
anticlimax//第2行
输出:antic

列2:
输入:committee
eerily
输出:ee
例3
输入:come
October
输出:接龙不成功
例4:
输入:mama
mamaliga
输出:mama
▼优质解答
答案和解析
int main()
{
char first[20] = {0};
char second[20] = {0};
char key[20] = {0};
//input
printf("please input first word:");
scanf("%s", first);
printf("please input second word:");
scanf("%s", second);
//begin
bool found = false;
for (int i = 0; i < 20; i ++)
{
char tmp = first[i];
if (tmp == second[0])
{
found = true;
}
if (found == true)
{
int len = 0;
for (int l = i, j = 0; l < 20, j < 20; l ++, j ++)
{
if (first[l] != 0)
{
key[j] = first[l];
len ++;
}
else
break;
}
for (int j = 0; j < len; j ++)
{
if (key[j] != second[j])
{
found = false;
memset(key, 0x00, sizeof(key)/sizeof(key[0]));
}
}
if (found)
printf("the max keyword is: %s \n", key);
else
printf("can not found the key word! \n");
}
}
return 0;
}