C++分治法

来源:百度知道 编辑:UC知道 时间:2024/06/02 09:51:15
用C++语言实现分治法计算两字符串的最小相同字串,如题意大家帮帮忙。可以运行的话直接加分?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void judge(char*s[],int n)//在所有相同子串中比较找最大
{
char*arr[1000];
int j=0,k;

if(n!=1)
{
for(int i=1;i<n;i++)
{
if(strlen(s[i])>strlen(s[0]))
s[0]=s[i];
}
}

printf("\n最大相同子串为:");
arr[j]=s[0];j++;

for(int i=1;i<n;i++)
{
if(strlen(s[i])==strlen(s[0]))
{
for(k=0;k<j;k++)
{
if(strcmp(s[i],arr[k])==0)k=j+1;
}
if(k==j)
{
arr[j]=s[i];
j++;
}
}
}

for(k=0;k<j;k++)
{
printf("%s ",arr[k]);
}
printf("\n");
}

void print(int n,char*s[])
{
if(n==0)printf("none\n");//没有相同子串
else
judge(s,n);
}

char digui(char*r,char*t,char s1[],char s2[],char a[],int n,char*s[])
{
char str1[1000],str2[1000];
char zichu