收藏 分享(赏)

3.1.2矩阵连乘问题(备忘录方法).doc

上传人:scg750829 文档编号:7669510 上传时间:2019-05-23 格式:DOC 页数:2 大小:27.50KB
下载 相关 举报
3.1.2矩阵连乘问题(备忘录方法).doc_第1页
第1页 / 共2页
3.1.2矩阵连乘问题(备忘录方法).doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、备忘录是动态规划算法的变形. 备忘录方法也是用表格保存已解决子问题的答案.与动态规划算法不同的是, 备忘录方法的递归方式是 自顶向下 的, 而动态规划算法则是 自底向上 递归的. 因此, 备忘录方法的控制结构与直接递归方法的控制结构相同, 而区别在于备忘录方法为每个解过的子问题建立了备忘录以备需要时查看, 避免了相同子问题的重复求解.备忘录方法为每个子问题建立一个记录项, 并初始化为一个特殊值表示该子问题尚未求解. 在求解过程中, 对每个待求的子问题, 首先查看其相应的记录项. 如若记录项仍为初始化时的特殊值, 则表示该子问题尚未求解, 于是对其求解; 如若记录项非特殊值 , 则表示该子问题已

2、求解, 直接取值即可.#include #include #define N 100 using namespace std; int mN+1N+1 = 0, sN+1N+1 = 0, pN+2 = 0;/ 数组 m 用于记录子问题的解, 数组 s 用于记录最佳分割点, 数组 p 用于记录矩阵行列数. int LookUpdMatrixChain(int i, int j) if(mij) return mij; if(i = j) return 0; mij = LookUpdMatrixChain (i + 1, j) + pi - 1*pi*pj; sij = i; for (int k = i + 1; k n; for (int i = 0; i pi; coutn“ 个矩阵相乘最少需要计算 “LookUpdMatrixChain (1, n)“ 次乘法.“endlendl; cout“矩阵相乘顺序: “endlendl; Traceback (1, n); return 0; 输入样例:310 100 5 50输出:3 个矩阵相乘最少需要计算 7500 次乘法.矩阵相乘顺序:Multiply A 1, 1 and A 2, 2Multiply A 1, 2 and A 3, 3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报