/**//*标题:<<系统设计师>>应试编程实例-[动态规划算法程序设计]作者:成晓旭时间:2002年09月15日(18:20:00-21:25:00)实现“最长公共字符串子序列”问题的动态规划算法实现函数时间:2002年09月15日(21:31:00-22:00:00)实现“最长公共字符串子序列”问题的动态规划算法实现函数*/#include"stdio.h"#include"stdlib.h"#include"string.h"#defineMAXN64//全局最大值常量//:=========================“最长公共字符串子序列”问题的动态规划法算法=========================//计算两个字符串序列的最长公共子序列的长度函数intFirst_Born_SubStr_Len(char*a,char*b,intsubstrlen[][MAXN])...{inti,j,m=strlen(a),n=strlen(b);for(i=0;i<=m;i++)substrlen[i][0]=0;for(j=1;j<=m;j++)substrlen[0][j]=0;for(i=1;i<=m;i++)...{for(j=1;j<=n;j++)if(a[i-1]==b[j-1])substrlen[i][j]=substrlen[i-1][j-1]+1;elseif(substrlen[i-1][j]>=substrlen[i][j-1])substrlen[i][j]=substrlen[i-1][j];elsesubstrlen[i][j]=substrlen[i][j-1];}return(substrlen[m][n]);}//构造最长公共子序列函数char*Build_First_Born_SubStr(char*a,char*b,charstr[])...{intk,i=strlen(a),j=strlen(b),array[MAXN][MAXN];k=First_Born_SubStr_Len(a,b,array);str[k]='';while(k>0)...{if(array[i][j]==array[i-1][j])i--;elseif(array[i][j]==array[i][j-1])j--;else...{str[--k]=a[i-1];i--;j--;}}return(str);}//测试“最长公共字符串子序列”问题的动态规划法函数voidRun_SubString()...{charstr0[MAXN],str1[MAXN],str2[MAXN];printf("输入第一个字符串(长度<%d): ",MAXN);scanf("%s",&str1);printf("输入第二个字符串(长度<%d): ",MAXN);scanf("%s",&str2);printf("其“最长公共字符串子序列”=%s ",Build_First_Born_SubStr(str1,str2,str0));}//:=========================“最长公共字符串子序列”问题的动态规划法算法=========================intmain(intargc,char*argv[])...{//Run_SubString();Run_Ikebana();printf(" 应用程序运行结束! ");return0;}