您的位置:首页 > 其它

递归实现求取两个字符串的最大公约数

2018-02-02 11:36 507 查看
用C语言编写一个函数,返回两个字符串的最大公串。例如,“adbccadebbca”和“edabccadece”,返回“bccade”!!
#include <iostream>
#include <string>
#include <memory.h>
#include <stdio.h>
#include <stdlib.h>
//#include <windows.h>
using namespace std;

char findMaxStr(char * s1,char *s2){
char *ss;
static int maxlen=0;
int len;
if(strstr(s1,s2))  //如果S2是S1的子串
{
if(maxlen<strlen(s2))
{
maxlen=strlen(s2);
printf("maxlen:%d result:%s\n",maxlen,s2);
}
return 0;
}
len=strlen(s2);
if(len==1)
{    //递归的出口函数,终止条件
//printf("error\n");
//return 1;
return 1;
}
ss=(char *)malloc(len);
memcpy(ss,s2,len);//内存拷贝函数
ss[len-1]=0;
//printf("len=%d str=%s\n",len-1,ss);
findMaxStr(s1,ss); //是否需要注释掉??
memcpy(ss,s2+1,len); //后移一位
//printf("second: len=%d str=%s\n",len-1,ss);
findMaxStr(s1,ss); //递归
free(ss);
return 1;
}

int main() 
{
char a[200]="adcyioabcdefxxabcdxxx";
char b[200]="mmx";

findMaxStr(a,b);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: