Advertisement

动态规划方法

阅读量:

动态规划是一种专门针对多阶段决策最优化问题的求解方法,只有具备最优子结构特征的多阶段决策问题才适合采用动态规划进行设计与求解。

1.最长公共子序列问题
当给定一个序列X={x1,x2,…,xm},若存在另一个序列Z={z1,z2,…,zk},并且满足存在一个严格递增的下标序列{i1,i2,…,ik},使得对于任意j=1,2,…,k均有zj=xij,则称Z为X的一个子序列。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的一个子序列,并且对应的递增下标序列为{2,3,5,7}。

若某序列Z同时是两个给定序列X和Y的子序列,则称该序列为X与Y的公共子序列。
对于给定的两个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn}而言,在此基础上寻找它们之间的最长公共子序列是一项重要的任务。

基于参考程序的内容编写主函数代码,并实现利用动态规划方法对最长公共子序列进行求解。测试数据应包括教材第155页中提供的算法设计题目数据,并额外自行构造两组测试用例。
参考程序:

复制代码
    #include "stdlib.h"
    #include "string.h"
     void LCSLength(char *x ,char *y,int m,int n, int **c, int **b)
    {
       in

全部评论 (0)

还没有任何评论哟~