C程式設計——程式設計實現查詢兩個字串的最大公共子串2.0
阿新 • • 發佈:2018-12-01
1、
題目:程式設計實現查詢兩個字串的最大公共子串
示例:“aocdfe"和"pmcdfa"最大公共子串為"cdf”
注:最大公共子串有不止一個時,只輸出第一個最大子串
利用斐波那契數列數的思想
**2、**程式
#include <stdio.h> #include <string.h> int main() { char *str1 = "aodacdfe"; char *str2 = "aadapmcdfea"; int table[100][100] = {0}; int i; int j; for (i = 0; i < strlen(str2); i++) { if (str1[0] == str2[i]) table[0][i] = 1; else table[0][i] = 0; } for (i = 1; i < strlen(str1); i++) { if (str2[0] == str1[i]) table[i][0] = 1; else table[i][0] = 0; for (j = 1; j < strlen(str2); j++) { if (str1[i] == str2[j]) { table[i][j] = table[i-1][j-1] + 1; } else { table[i][j] = 0; } } } int start = 0; int longest = table[0][0]; for (i = 1; i < strlen(str1); i++) { for (j = 1; j < strlen(str2); j++) { if (longest < table[i][j]) { longest = table[i][j]; start = i - longest + 1; } } } printf ("最大長度是:%d\n", longest); printf ("最大公共子串為:"); for (i = start; i < longest+start; i++) { printf ("%c", str1[i]); } printf ("\n"); return 0; }
**3、**測試結果
最大長度是:4
最大公共子串為:cdfe