⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.txt

📁 S和T分别是具有m个和n个字符的顺序存储的串
💻 TXT
字号:
void main()
 {  int i,*p,j,k; 
   SString s1,s2,temp0,temp1,temp2,sub,t1,t2; 
   printf(" *******Solutoin of The Longest Shared Sub-String of Two Given Strings*******\n\n");
   printf("Pls Enter the 1st String: ");
   gets(t1);printf("\n");
   printf("Pls Enter the 2nd String: ");
   gets(t2);printf("\n");
   StrAssign(s1,t1);StrAssign(s2,t2);/*得到两串初始输入的字符串*/
   printf("\n");
   for(j=1;j<=strlen(s2);j++)
   { 
      		for(k=1;k<=strlen(s2)-j+1;k++)
   			{
   				ClearString(&sub);/*抽象数据类型,统一置于另一C程序中,下同*/
   				SubString(&sub,s2,j,k);/*求第二个输入的字符串的子串(从第j个字母起(第一个字母起到最后一个字母)每次依次取k位(1位到strlen(s2)-j+1位))*/
   			    p=(int*)malloc((StrLength(sub)+1)*sizeof(int));/*KMP算法分配p容量*/
                get_next(sub,p);/*KMP算法中求s2子串next值,用函数另外编写*/
                i=Index_KMP(s1,sub,1,p);/*判断两个嵌套循环中任意s2子串是否和s1模式匹配,用函数另外编写*/
/*以下为每次匹配成功的子串和先前的存于temp0中的比较大的则覆盖原先的串*/
                if(i!=0&&(StrLength(sub)>StrLength(temp0)))
   					{strcpy(temp0,sub);}/*此处用了C语言自带的字符数组处理函数,试验表明该复制函数相当于清空temp0字符串后再写入sub, 抽象数据类型StrCopy未进行测试 */
   				else    						
   						if (i!=0&&StrLength(sub)<StrLength(temp0));
   						else 
   								if(i!=0&&StrLength(sub)==StrLength(temp0))/*此处为判断某一子串若长度恰好和temp0中相等则存于temp1中,所以本算法最多只能求出两个长度相等的最长子串*/
   									{strcpy(temp1,sub);}
   								else break;
   			}
   	}		/*以下为最终求得的存于temp0,或temp0,temp1中的最长子串的判断输出过程*/
if(StrLength(temp0)>StrLength(temp1)||(StrCompare(temp0,temp1)==0&&StrLength(temp0)!=0))
 		{printf("The Longest Shared Sub-String : \"");StrPrint(temp0);printf("\"\n");}
  else 
  		if(StrLength(temp0)!=0&&StrCompare(temp0,temp1)!=0)
  				{printf("The Longest Shared Sub-String : \"");StrPrint(temp0);printf("\" & \"");StrPrint(temp1);printf("\"\n");}
  		else 
  				if (StrLength(temp0)==0)
  					printf("No Sub-String Matches!\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -