题目传送门

 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相关推荐

  1. 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个 ...

  2. 编码分布式矩阵乘法(Coded Distributed Matrix Multiplication, CDMM)问题简单介绍

    许多现代分布式计算框架都会遇到大规模分布式矩阵乘法问题,即计算两个大规模矩阵和的乘积,如MapReduce.Spark.由于分布式计算系统会出现的无法预测的时延,主节点(master node)必须等 ...

  3. 矩阵连乘积 c语言程序,(用括号表示出结果)矩阵连乘C语言描述

    1.矩阵连乘 矩阵相乘: 矩阵A和B相乘,p.q分别为A的行和列,q.r分别为B的行和列: 所以A和B相乘,两个矩阵相乘的计算量为pqr. 1.1 完全加括号的矩阵连乘积 完全加括号的矩阵连乘积可递归 ...

  4. 实现矩阵连乘积(动态规划)

    目录 实现矩阵连乘积 题目 问题分析 算法分析 时间复杂度 代码实现 执行结果 动态规划 基本思想 举例 个人主页:天寒雨落的博客_CSDN博客-初学者入门C语言,python,数据库领域博主

  5. 计算矩阵连乘积(动态规划)

    时限: 1000ms 内存限制:10000K  总时限:3000ms 描述: 在科学计算中经常要计算矩阵的乘积.矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数.若A是一个p×q的矩阵,B是一个q× ...

  6. 问题描述给定n个矩阵:A1,A2,…,An,其中Ai与Ai+1是可乘的,i=1,2…,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。

    输入:矩阵个数 如,3 依次输入矩阵的行数和最后一个矩阵的列数 如10 5 15 10 输出:最小计算量的值 package pc03; import java.util.Scanner; publi ...

  7. 一位学长的ACM总结(感触颇深)

    发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...

  8. 神牛笔记:吉林大学ACM总结(fennec)

    其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的 ...

  9. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

最新文章

  1. 为什么铺天盖地都是Python的广告?
  2. freebsd mysql 安装_Freebsd中mysql安装及使用笔记-阿里云开发者社区
  3. 如何查看Oracle的用户权限
  4. iis php win安装kangle_Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
  5. 阿里巴巴云游戏平台荣获首届高新视频创新应用大赛一等奖
  6. 用于MyBatis CRUD操作的Spring MVC 3控制器
  7. 网站服务器令牌获取,adobe - 获取Adobe Sign访问令牌以进行服务器到服务器身份验证 - 堆栈内存溢出...
  8. vue tree组件_Ant-Design-Vue和Icon按需加载方案 - JeecgBoot实战
  9. 一、bootstrap table 初体验
  10. 后端小白的VUE入门笔记, 前端高能慎入
  11. Inductive Matrix Completion Based on Graph Neural Networks
  12. Simpson积分应用
  13. 《巴黎圣母院》 1.大厅 解读
  14. 中集集团人工智能企业中集飞瞳,拿产品说话的全球航运港口人工智能高科技独角兽,全球第一家完成200万次人工智能集装箱验箱的AI企业
  15. CStdioFile之ReadString()与WriteString()注意事项
  16. 史上最详细的ConcurrentHashMap详解--源码分析
  17. 河马书来了!线上实验领域的“圣经”火热预售中
  18. 【转】局域网共享教程
  19. ArcGIS计算NDVI为什么只有1和-1及0值
  20. 火狐网页对话框_默认情况下,在Firefox中展开“添加书签”对话框

热门文章

  1. mysql免安装版的问题
  2. Spring.NET学习笔记9——打造简易的依赖注入框架(练习篇) Level 100
  3. Django model层 mysql_Django模型层(models.py)之模型创建
  4. Django REST framework API 指南(25):状态码
  5. javascript动态添加form表单元素
  6. [转载]javascript创建对象的几种方式
  7. SPF Tarjan算法求无向图割点(关节点)入门题
  8. PHP跳转到另一个画面,并且带着该行内的一个数值作为参数传递给下一个页面.能给例子吗...
  9. linux Shell学习笔记第五天
  10. Automate repeatedly actions in work