个人模板 最长公共连续子序列

xiaoxiao2021-02-28  110

#include<bits/stdc++.h> using namespace std; void getLCS(char* str1, char* str2) { int len1 = strlen(str1); int len2 = strlen(str2); int matrix[len1]; //str1为x方向 //初始化matrix for (int i = 0; i < len1; i++) { matrix[i] = 0; } int maxValue;//str2为y方向,最多有len2个最大值 int maxIndex; //初始化maxValue和maxIndex maxValue = -1; maxIndex = -1; for (int i = 0; i < len2; i++) { for (int j = len1 - 1; j >= 0; j--) { //扫描str1与str2的各个字符的匹配情况 if (str2[i] == str1[j]) { if (j == 0) { matrix[j] = 1; } else { matrix[j] = matrix[j - 1] + 1; } } else { matrix[j] = 0; } if (matrix[j] != 0 && matrix[j] > maxValue) { //更新maxValue的值 maxValue = matrix[j]; maxIndex = j; } } } for(int i = maxIndex - maxValue +1; i < maxIndex + 1; i++) { printf("%c",str1[i]); } printf("\n"); } int main() { int n; char a[101],b[101]; while(scanf("%d",&n)==1) { for(int i=0; i<n; i++) { scanf("%s%s",a,b); getLCS(a,b); } } }
转载请注明原文地址: https://www.6miu.com/read-45097.html

最新回复(0)