算法总结之动态规划(DP)

适用动态规划的特点 所解决的问题是最优化问题。 所解决的问题具有“最优子结构”。可以建立一个递推关系,使得n阶段的问题,可以通过几个kb? a:b int D[MAX][MAX];//记录最长公共子序列的长度 int S[MAX];//记录其中一个公共最长子序列 void countLen(int A[], int n, int B[], int m) {//根据公式填写D[i][j] int i, j; for (i = 1; i <= n; i++)//i=0,j=0不用 for (j = 1; j <= m; j++) if (A[i] == B[j]) D[i][j] = D[i - 1][j - 1] + 1; else D[i][j] = max(D[i - 1][j], D[i][j - 1]); } int searchS(int A[], int n, int B[], int m) {//如果D[i]j]==D[i-1][j-1]+1,则A[i]可写进S; int i, j, k; i = n; j = m; k = D[n][m]; while (i != 0 && j != 0) { if (D[i][j] == D[i - 1][j - 1]) i--; else if (D[i][j] == D[i][j - 1])//也可沿着D[i][j]==d[i-1][j]回溯 j--; else { S[k--] = A[i]; i--; j--; } } //返回最长长度 return D[m][n]; } 其他问题 最大字段和问题 矩阵连乘问题 数据压缩问题 0-1背包问题 最优二叉树搜索问题 【原创声明。转载请标注原文地址:https://blog.csdn.net/yunyunyx/article/details/84140780】 【原创声明】转载请标明出处:https://www.cnblogs.com/surecheun/https://www.cnblogs.com/surecheun/p/9973932.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信