动态规划——最长公共子序列
给定两个序列X=ABCBDAB, Y=BDCABA,求X和Y的最长公共子序列
#include<stdio.h> #include<string.h> int max(int a,int b){ if(a>b)return a; else return b; } void length(char *a,char *b,int m,int n){ int c[m+1][n+1]; for(int i=0;i<=m;i++){ c[i][0]=0; } for(int i=0;i<=n;i++){ c[0][i]=0; } for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ if(a[i-1]==b[j-1]){ c[i][j]=c[i-1][j-1]+1; } else{ c[i][j]=max(c[i-1][j],c[i][j-1]); } } } printf("%d",c[m][n]); } int main(){ char a[100],b[100]; scanf("%s",&a); scanf("%s",&b); int m=strlen(a); int n=strlen(b); length(a,b,m,n); }

浙公网安备 33010602011771号