在C语言中,要找到两个字符串中的最长公共子串,可以使用动态规划算法 #include<stdio.h>#include<string.h>voidlongestCommonSubstring(char*str1,char*str2){intlen1 =strlen(str1);intlen2 =strlen(str2);intmaxLength =0;intendIndex =-1;// 创建一个二维数组,用于存储动态规划的结果intdp[len1 +1][l...
以下是一个C语言函数,用于找到两个字符串的最长公共前缀: #include<stdio.h>#include<string.h>char*longest_common_prefix(constchar*str1,constchar*str2){inti;staticcharresult[100];// 用于存储结果的静态字符数组for(i =0; str1[i] !='\0'&& str2[i] !='\0'; i++) {if(str1[i] == ...
int LCS(char * X, char * Y, int m, int n, char * & B) //返回最大公共子串的长度 { int * C = (int *)malloc((m + 1) * (n + 1) * sizeof(int)); //记录每个子问题的最长公共子序列 0-m 0-n B = (char *)malloc(m * n * sizeof(char)); //标记 1-m 1-n memset...
原题连接:4073:最长公共字符串后缀(Longest String Postfix)
引进一个二维数组c,用c记录X与Y 的LCS 的长度,b记录c是通过哪一个子问题的值求得的,以决定输出最长公共字串时搜索的方向。 我们是自底向上进行递推计算,那么在计算ci,j之前,ci-1j-1,ci-1与cj-1均已计算出来。此时我们根据X == Y还是X != Y,就可以计算出c。
(str2, temp); len1 += len2; len2 = len1 - len2; len1 = len1 - len2; } //maxlen记录最长公共字串长度,index记录第一个最长字串的最后一个字符位置 int maxlen=0, index; for(int i=0; i<len1; i++) { for(int j=0; j<len2; j++) { if(str1[i] == str2[j]) { dp[...
C语言,用户输入三个字符串,求这三个字符串的最长公共子串,并输出。 分类:电脑/网络 >> 程序设计 >> 其他编程语言 问题描述: C语言,用户输入三个字符串,求这三个字符串的最长公共子串,并输出。 希望大家能帮帮忙。。这题难了我好久。 解析: 我的blog里面有一篇文章,可以参考一下: ...
给定两个字符串,找出最长公共子串,并返回该子串,如果不存在则返回-1. 示例输入 abcdefg abcbcdefg 示例输出 bcdefg 示例输入 zxcvbnm asdfghjkl 示例输出 -1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
void main(){ char a1[ 100 ];char *p, *q;int i, j, n1 = 0;char *b1[ 50 ];//字符指针数组 printf("Please input a sentence:\n");gets( a1 );p = a1;while( *p != '\0' ) { if( *p == ' ') {//跳过空格 p++;continue;} else { i = 0;while( *( p + i...
计算所有c[i][j](0 ≤i ≤ m,0 ≤j ≤ n)的值,值最大的c[i][j]即为字符串x和y的最长公共子串的长度。根据该长度即i和j,确定一个最长公共子串。 【C代码】 (1)常量和变量说明 x,y:长度分别为m和n的字符串 c[i][j]:记录x中前i个字符和y中前j个字符的最长公共子串的长度 ...