矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
题目传送门
1 /* 2 题意:加上适当的括号,改变计算顺序使得总的计算次数最少 3 矩阵连乘积问题,DP解决:状态转移方程: 4 dp[i][j] = min (dp[i][k] + dp[k+1][j] + p[i-1] * p[k] * p[j]) (i<=k<j) 5 s[i][j] 记录断开的地方(即加括号的位置),回溯法输出结果 6 */ 7 #include <cstdio> 8 #include <cstring> 9 #include <string> 10 #include <algorithm> 11 #include <cmath> 12 #include <iostream> 13 using namespace std; 14 15 const int MAXN = 1e2 + 10; 16 const int INF = 0x3f3f3f3f; 17 int dp[MAXN][MAXN]; 18 int s[MAXN][MAXN]; 19 int p[MAXN]; 20 int n; 21 22 void print(int i, int j) 23 { 24 if (i == j) printf ("A%d", i); 25 else 26 { 27 printf ("("); 28 print (i, s[i][j]); 29 printf (" x "); 30 print (s[i][j] + 1, j); 31 printf (")"); 32 } 33 } 34 35 void work(void) 36 { 37 for (int i=1; i<=n; ++i) dp[i][i] = 0; 38 for (int l=2; l<=n; ++l) 39 { 40 for (int i=1; i<=n-l+1; ++i) 41 { 42 int j = i + l - 1; 43 dp[i][j] = INF; 44 for (int k=i; k<=j-1; ++k) 45 { 46 int tmp = dp[i][k] + dp[k+1][j] + p[i-1] * p[k] * p[j]; 47 if (tmp < dp[i][j]) 48 { 49 dp[i][j] = tmp; s[i][j] = k; 50 } 51 } 52 } 53 } 54 55 print (1, n); puts (""); 56 } 57 58 int main(void) //ZOJ 1276 Optimal Array Multiplication Sequence 59 { 60 //freopen ("ZOJ_1276.in", "r", stdin); 61 62 int cas = 0; 63 while (scanf ("%d", &n) == 1) 64 { 65 if (n == 0) break; 66 for (int i=1; i<=n; ++i) scanf ("%d%d", &p[i-1], &p[i]); 67 68 printf ("Case %d: ", ++cas); 69 work (); 70 } 71 72 return 0; 73 } 74 75 /* 76 Case 1: (A1 x (A2 x A3)) 77 Case 2: ((A1 x A2) x A3) 78 Case 3: ((A1 x (A2 x A3)) x ((A4 x A5) x A6)) 79 */
转载于:https://www.cnblogs.com/Running-Time/p/4490772.html
矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence相关推荐
- UVAoj 348 - Optimal Array Multiplication Sequence
1 /* 2 题意:矩阵相乘的最少的步数 3 dp[i][j]=min(dp[i][j], dp[i][k]+dp[k+1][j]+num[i-1]*num[k]*num[j]); 4 表示的是第i个 ...
- 编码分布式矩阵乘法(Coded Distributed Matrix Multiplication, CDMM)问题简单介绍
许多现代分布式计算框架都会遇到大规模分布式矩阵乘法问题,即计算两个大规模矩阵和的乘积,如MapReduce.Spark.由于分布式计算系统会出现的无法预测的时延,主节点(master node)必须等 ...
- 矩阵连乘积 c语言程序,(用括号表示出结果)矩阵连乘C语言描述
1.矩阵连乘 矩阵相乘: 矩阵A和B相乘,p.q分别为A的行和列,q.r分别为B的行和列: 所以A和B相乘,两个矩阵相乘的计算量为pqr. 1.1 完全加括号的矩阵连乘积 完全加括号的矩阵连乘积可递归 ...
- 实现矩阵连乘积(动态规划)
目录 实现矩阵连乘积 题目 问题分析 算法分析 时间复杂度 代码实现 执行结果 动态规划 基本思想 举例 个人主页:天寒雨落的博客_CSDN博客-初学者入门C语言,python,数据库领域博主
- 计算矩阵连乘积(动态规划)
时限: 1000ms 内存限制:10000K 总时限:3000ms 描述: 在科学计算中经常要计算矩阵的乘积.矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数.若A是一个p×q的矩阵,B是一个q× ...
- 问题描述给定n个矩阵:A1,A2,…,An,其中Ai与Ai+1是可乘的,i=1,2…,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。
输入:矩阵个数 如,3 依次输入矩阵的行数和最后一个矩阵的列数 如10 5 15 10 输出:最小计算量的值 package pc03; import java.util.Scanner; publi ...
- 一位学长的ACM总结(感触颇深)
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...
- 神牛笔记:吉林大学ACM总结(fennec)
其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的 ...
- POJ ZOJ题目分类
POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...
最新文章
- 为什么铺天盖地都是Python的广告?
- freebsd mysql 安装_Freebsd中mysql安装及使用笔记-阿里云开发者社区
- 如何查看Oracle的用户权限
- iis php win安装kangle_Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
- 阿里巴巴云游戏平台荣获首届高新视频创新应用大赛一等奖
- 用于MyBatis CRUD操作的Spring MVC 3控制器
- 网站服务器令牌获取,adobe - 获取Adobe Sign访问令牌以进行服务器到服务器身份验证 - 堆栈内存溢出...
- vue tree组件_Ant-Design-Vue和Icon按需加载方案 - JeecgBoot实战
- 一、bootstrap table 初体验
- 后端小白的VUE入门笔记, 前端高能慎入
- Inductive Matrix Completion Based on Graph Neural Networks
- Simpson积分应用
- 《巴黎圣母院》 1.大厅 解读
- 中集集团人工智能企业中集飞瞳,拿产品说话的全球航运港口人工智能高科技独角兽,全球第一家完成200万次人工智能集装箱验箱的AI企业
- CStdioFile之ReadString()与WriteString()注意事项
- 史上最详细的ConcurrentHashMap详解--源码分析
- 河马书来了!线上实验领域的“圣经”火热预售中
- 【转】局域网共享教程
- ArcGIS计算NDVI为什么只有1和-1及0值
- 火狐网页对话框_默认情况下,在Firefox中展开“添加书签”对话框
热门文章
- mysql免安装版的问题
- Spring.NET学习笔记9——打造简易的依赖注入框架(练习篇) Level 100
- Django model层 mysql_Django模型层(models.py)之模型创建
- Django REST framework API 指南(25):状态码
- javascript动态添加form表单元素
- [转载]javascript创建对象的几种方式
- SPF Tarjan算法求无向图割点(关节点)入门题
- PHP跳转到另一个画面,并且带着该行内的一个数值作为参数传递给下一个页面.能给例子吗...
- linux Shell学习笔记第五天
- Automate repeatedly actions in work