全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法分析与设计实验报告实验题目: 动态规划算法的设计与实现 1、实验目的通过本实验,掌握动态规划算法的设计的基本思想,进一步提高学生的编程能力。2、实验内容:给定n个矩阵A1,A2,An,其中Ai与Ai+1是可乘的,i=1,2,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。3、源程序#include using namespace std; #define N 100 int n,q; int mNN,sNN,pN+1; void matrixChain() /动态规划计算最优值算法 for(int i=1;i=n;i+) mii=0; for(int r=2;r=n;r+) /对角线循环 for(int i=1;i=n-r+1;i+) /行循环 int j = r+i-1; /列的控制,找mij的最小值,先初始化一下,令k=i mij=mii+mi+1j+pi-1*pi*pj; sij=i; /k从i+1到j-1循环找mij的最小值 for(int k = i+1;kj;k+) inttemp=mik+mk+1j+pi-1*pk*pj; if(tempmij) mij=temp; /s用来记录在子序列i-j段中,在k位置处断开能得到最优解 sij=k; int Recur(int i, int j) /直接递归计算最优值 if (i = j) return 0; int u = Recur(i,i)+Recur(i+1,j)+pi-1*pi*pj; /递归 sij = i; for (int k=i+1; kj; k+) int t=Recur(i,k)+Recur(k+1,j)+pi-1*pk*pj; /从k处断开,分别求得每次的数乘次数 if (t0) return mij; if (i = j) return 0; int u=Look(i, i)+Look(i+1,j)+pi-1*pi*pj; sij=i; for (int k=i+1; kj;k+) int t=Look(i,k)+Look(k+1,j)+pi-1*pk*pj; /递归 if (tu) u=t; /从k处断开,分别求得每次的数乘次数 sij=k; /返回t,k中较小的值,并记录断点处k mij=u; return u; void Traceback(int i,int j) /输出矩阵结合方式,加括号输出 if(i = j) /只有一个矩阵,直接输出 coutAi; else if(i+1 = j) /两个矩阵,加括号输出 cout(AiAj); else cout(; Traceback(i,sij); /递归,从最得到最优解的地方sij处断开 Traceback(sij+1,j); cout); void main() coutn; cout输入第一个矩阵行数和第一个到第n个矩阵的列数:; for(int i=0;ipi; coutendl; cout请选择解决矩阵连乘问题的方法:endl; cout1.动态规划算法endl; cout2.直接递归算法endl; cout3.备忘录算法endl; cout0.退出.endl; coutendl; coutq; coutendl; while(q!=0) switch(q) case 1: matrixChain(); cout动态规划算法解决矩阵连乘问题:endl; cout最优计算次序为:; Traceback(1,n); coutendl; cout矩阵连乘的最优数乘次数为:m1nendl; /最终解值为m1n break; case 2: Recur(0,n); cout直接递归算法解决矩阵连乘问题:endl; cout最优计算次序为:; Traceback(1,n); coutendl; cout矩阵连乘的最优数乘次数为:m1nendl; /最终解值为m1n break; case 3: Look(1,n); cout备忘录算法解决矩阵连乘问题:endl; cout最优计算次序为:; Traceback(1,n); coutendl; cout矩阵连乘的最优数乘次数为:m1nendl; /最终解值为m1n break; case 0: q=0; break; coutendl; cout请选择解决矩阵连乘问题的方法:endl; cout1.动态规划算法endl; cout2.直接递归算法endl; cout3.备忘录算法endl; cout0.退出.endl; coutq; coutendl; coutendl; 4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 放假前安全教育内容课件
- 地下室混凝土结构自防水性能提升全案课件内容
- 2025-2026学年上学期高一生物沪科版(2020)期末必刷常考题之细胞通过分化形成多细胞生物体
- 2025年度山东继续教育公需科目考试题(含答案)
- 山东省预防医学理论考试试题及答案
- 煤矿安全管理培训课件
- 公共基础知识测试题集(含答案)
- 2025年平安校园杯校园安全知识竞赛题库
- 【题库】有限空间作业完整版题库(含标准答案)
- 2021年保育员(高级)考试模拟试题(一四七八)
- 老年人误吸的预防
- 驻足思考瞬间整理思路并有力表达完整版
- 文明工地施工宣传标语
- 基于太阳能电池板的智能跟踪系统设计
- 小学六年级全册体育教案(已整理)
- 2 试验二 系统相频特性对信号传输的影响试验 2
- 建筑装饰设计收费标准(完整版)资料
- GB/T 12970.1-2009电工软铜绞线第1部分:一般规定
- 湖南省邵阳市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 危险源辨识风险评价记录表格范例范例
- 阀门维修要求及验收标准
评论
0/150
提交评论