动态规划——最长公共子序列问题

xiaoxiao2021-02-28  37

边写代码,边记录,所以会使得顺序有些错乱,这次写的是动态规划的最长子序列问题。

伪代码上图已给,我写的代码如下:

#include <stdio.h> #include <string.h> #define M 8 int L[M][M]={0}; int LCS(char *A,char *B,int a,int b); int main(void) { char A[] = "zxyxyz",B[] = "xyyzx"; printf("the length is: %d\n",LCS(A,B,strlen(A),strlen(B))); return 0; } int LCS(char *A,char *B,int a,int b) { int i=0,j=0; for(i=0;i<a;i++) { L[i][0] = 0; } for(i=0;i<b;i++) { L[0][i] = 0; } for(i=1;i<=a;i++) { for(j=1;j<=b;j++) { if(A[i-1]==B[j-1]) L[i][j] = L[i-1][j-1]+1; else L[i][j] = L[i-1][j]>L[i][j-1]?L[i-1][j]:L[i][j-1]; } } return L[a][b]; }
转载请注明原文地址: https://www.6miu.com/read-2623839.html

最新回复(0)