矩阵链连乘问题:
给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘 的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序 计算矩阵连乘积需要的数乘次数最少。
输入数据:共m+1行;第一行为测试数据的组数m;以后每行n+1个正 整数,表示n个矩阵的行列值。
输出:最少次数及连乘的计算次序。
样例输入:
1
5,10,4,6,10,2
样例输出:
348
(A1(A2(A3(A4A5))))

根据课本思路,首先用dp数组记录具体的次数,用s数组记录最佳的划分位置,之后遍历dp数组进行动态规划即可,此外,输入时注意好输入数据的意义,最后一个数是最后一个矩阵的列,在数据处理时应该将这个数据补上。另外,将结果输出时,需要用到之前动态规划中的s数组,根据s数组进行类似二分的输出,最后即可得到划分后的矩阵。

代码如下:
#include<bits/stdc++.h>
using namespace std;
int m,n;
int num[1005];
int dp[1005][1005];
int s[1005][1005];
void MartixChain()
{
for(int i=1;i<=n;i++)
dp[i][i]=0;
for(int r=2;r<=n;r++)
{
for(int i=1;i<=n-r+1;i++)
{
int j=i+r-1;
dp[i][j]=dp[i+1][j]+num[i-1]*num[i]*num[j];
s[i][j]=i;
for(int k=i+1;k<j;k++)
{
int temp=dp[i][k]+dp[k+1][j]+num[i-1]*num[k]*num[j];
if(temp<dp[i][j])
{
dp[i][j]=temp;
s[i][j]=k;
}
}
}
}
}
void TraceBack(int i, int j){
if(i == j){
cout <<‘A’<< i;
return;
}
cout <<"(";
TraceBack(i,s[i][j]);
TraceBack(s[i][j]+1,j);
cout <<")";
}
int main()
{
scanf("%d",&m);
while(m–)
{
memset(dp,0,sizeof(dp));
int i=0;
while(1)
{
scanf("%d",&num[i]);
char c=getchar();
i++;
if(c!=’,’)
break;
}
n=i;
MartixChain();
printf("%d\n",dp[1][n-1]);
TraceBack(1,n-1);
}
return 0;
}

计算机算法设计与分析 矩阵连乘问题相关推荐

  1. 计算机算法设计与分析教学大纲,《算法设计与分析》教学大纲

    <<算法设计与分析>教学大纲>由会员分享,可在线阅读,更多相关<<算法设计与分析>教学大纲(3页珍藏版)>请在人人文库网上搜索. 1.课程编号:&quo ...

  2. 计算机算法设计与分析(第4版) 王晓东 著 2012.2 笔记(这本书还不错,偏实用、有难度)

    计算机算法设计与分析(第4版) 目录 1 算法概述 2 递归与分治策略 3 动态规划 4 贪心算法 5 回溯法 6 分支限界法 7 随机化算法 8 线性规划与网络流 算法概述 复杂性分析 NP-完全性 ...

  3. 计算机算法设计与分析考试题,《计算机算法设计与分析》习题及答案

    <计算机算法设计与分析>习题及答案 一.选择题 1.二分搜索算法是利用( A )实现的算法. A.分治策略 B.动态规划法 C.贪心法 D.回溯法 2.下列不是动态规划算法基本步骤的是( ...

  4. 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...

    中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...

  5. 国科大刘玉贵老师计算机算法设计与分析2021年期末考试题回顾

    总体感受 国科大研究生的计算机算法设计与分析课程有三位老师教授,分别是卜东波老师.陈玉福老师 和刘玉贵老师,这三位老师上课各有特色和风格.我选择的是刘玉贵老师的课程. 这门课程的内容挺充足的,但是有个 ...

  6. 计算机算法设计与分析第五章思维导图知识点总结 ( 初稿 )

    复习链接 计算机算法设计与分析第一章思维导图 计算机算法设计与分析第二章思维导图&&知识点总结 计算机算法设计与分析第三章思维导图&&知识点总结 计算机算法设计与分析第 ...

  7. 线性时间选择 python实现 计算机算法设计与分析

    最近算法老师布置了很多作业啊,其中一项就是要求实现书上<计算机算法设计与分析>28页的算法,实现过程如下:

  8. 计算机算法设计与分析(第5版)PDF

    <计算机算法设计与分析(第5版)>是2018年电子工业出版社出版的图书,作者是王晓东. 整本书的结构是:先介绍算法设计策略思想,然后从解决经典算法问题来学习,通过实践的方式去学习算法. 网 ...

  9. 计算机算法设计与分析——数字三角形问题

    计算机算法设计与分析(算法实现题3) 3-4 数字三角形问题 问题描述: 给定一个由n行数字组成的数字三角形.试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 算法设计: ...

最新文章

  1. 超卖 100 瓶茅台的事故分析
  2. Linux环境下Redis集群实践
  3. 咖啡日报入驻PMCAFF App安卓端
  4. 推荐 14 个 GitHub 上优质的原创前端博客文章仓库
  5. 2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - CC++大学B组 - B.扩散
  6. 设计模式之结构类模式PK
  7. ElasticSearch5.4X 搜索引擎查询java工具类
  8. IT运维管理为重,从业务需求看网管系统的选择
  9. 解决手机浏览器顶部下拉出现网页源或刷新的问题
  10. 15 张图,了解一下 TCP/IP 必知也必会的 10 个问题
  11. Brettle.Web.NeatUpload.dll大文件上传控件使用详解
  12. @RequestMapping测试各种访问方式
  13. Eclipse配置Tomcat8
  14. java 排序返回索引_java数组排序和索引
  15. java英语流利_day186-2018-12-23-英语流利阅读-待学习
  16. 三进制 四进制计算机原理,三进制计算机(中国三进制计算机)
  17. 送给女朋友的3D立体动态相册的实现代码
  18. python中函数的返回值,你了解吗?
  19. 高校邦java_高校邦Java核心开发技术【实境编程】答案
  20. android 百度名片

热门文章

  1. Android之帮助文档
  2. 关于如何在同一个浏览器用不同的session登录同个系统
  3. thinkphp事务处理以及无效时的解决方案(整理)
  4. hive的row_number()函数
  5. (转)python中的参数:*args和**kwargs
  6. js动态加载HTML元素时出现的无效的点击事件
  7. java开发之路——个人开发模板之技巧
  8. 零基础学习IOS开发(二)- 使用cocos2d-x3.0 执行Hello world
  9. System.ArgumentException: 已添加项。字典中的关键字:“RegEx”所添加的关键字:“RegEx” 异常的解决办法...
  10. 《恋上数据结构第1季》集合 ListSet、TreeSet、HashSet