矩阵连乘积 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

md5加密java实现_MD5加密(java实现)

java实现MD5加密:import java.security.MessageDigest;import sun.misc.BASE64Encoder;public class Tools {/** md5加密算法* return:结果为16进制的字符串长度为32位*/public static String getMd5String(String str) throws Exception{StringBuilder md5Code new StringBui…

POJ 1273 Drainage Ditches 最大流

很裸的最大流问题&#xff0c;不过注意会有重边&#xff0c;o(╯□╰)o&#xff0c;被阴了WA了一发 还有就是要用long long #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <climits> #include <stri…

java语言 编译原理_【Java学习】深入分析Java的编译原理

在《Java代码的编译与反编译》中&#xff0c;有过关于Java语言的编译和反编译的介绍。我们可以通过javac命令将Java程序的源代码编译成Java字节码&#xff0c;即我们常说的class文件。这是我们通常意义上理解的编译。但是&#xff0c;字节码并不是机器语言&#xff0c;要想让机…

javaSE_base04_集合框架

四、集合框架1&#xff1a;String类&#xff1a;字符串(重点) (1)多个字符组成的一个序列&#xff0c;叫字符串。 生活中很多数据的描述都采用的是字符串的。而且我们还会对其进行操作。 所以&#xff0c;java就提供了这样的一个类供我们使用。 (2)创建字…

火狐浏览器中打开java_将Firefox浏览器嵌入Java Swing中

小编典典这是一些示例代码import java.awt.Color;import java.awt.Component;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.FileNotFoundException;import java.io.File;imp…

实验 使用 vivado zedboard GPIO 开关 开控制 LED

前面我做了几个实验 都没有用过 开关&#xff0c;这一次用一用 发现 vivado 真的挺方便 所以 使用 vivado 开发 1.建工程 我使用 vivado 2013.4 创建新工程 –》 next –》next 勾选 Do not specify sources at this time //这样跳过后面两个添加文件页面 选择 board –》 ze…

java 最优化_java-多维度求最优解

拿出11条数据//条件每个位置(position)的人数限制每队(team)人数不能超过7人credits的总和在100分之内(包含100)总分(points)最高//位置人数限制position-1 : 1 position-2 : 3-5 position-3 : 1-3 position-4 : 3-5//模拟数据{points credits position team56 9.0 1 t154 9.1 …

polymer web componets 大前端

大前端 东南水乡 一叶小舟拂过水面 船上两位大侠把酒言欢 一位是玉真人 另一位是张真人 两人喝到开心处 变作对联起来 上联 前端研究&#xff0c;研究个屁~ 下联 前端设计&#xff0c;设计个屁~ 横批 前端sb特色 polymer 提供创建自定义和标准dom元素类似的自定义元素功能 可以…

citespace安装如何配置JAVA_citespace超详细安装教程

想用citespace写篇量化的文献综述但是试了很多次一直运行不了&#xff0c;无奈因为要分析的论文太多&#xff0c;只能继续学着下载……在踩了很多坑之后终于搞定了&#xff01;&#xff01;我参考了知乎大神们写的学习指南&#xff0c;但在下载过程中还是会遇到一点点小问题&am…

Ubuntu下安装配置JDK

第一步&#xff1a;下载jdk-7-linux-i586.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz 若失败&#xff0c;则自行下载即可。 第二步&#xff1a;解压安装 sudo tar zxvf ./jdk-7-linux-i586.tar.gz -C /usr/lib/jvm cd /usr/lib/…

必应(Bing)每日图片获取API

必应(Bing)每日图片获取API January 11, 2015 API http://lab.dobyi.com/api/bing.php 介绍 ValueDescriptiontitle标题desc描述url图片地址你们自由发挥……

java取模多位数_JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)...

当基础数据类型长度无法满足需求时可以使用大数类构造方法接受字符串为参数1 BigInteger bInt new BigInteger("123123");2 BigDecimal bDouble new BigDecimal("123123.123123124");基础操作(取模使用divideAndRemainder方法&#xff0c;返回的数组第二…

HDU 4902

数据太弱&#xff0c;直接让我小暴力一下就过了&#xff0c;一开始没注意到时间是15000MS&#xff0c;队友发现真是太给力了 #include <cstdio> #include <cstring> int n,q,a[100005],x[100005],p,l[100005],r[100005],t[100005]; int tree[1000005]; void build(…

tcp/udp高并发和高吐吞性能测试工具

在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间.下面介绍一个测试工具只需要简单地设置一下就能对tcp/udp服务进行…

java socket 对方关闭_java Socket判断对方是否已关闭连接

如何判断远端socket是否已经断开连接&#xff0c;如果断开那么需要重新连接。1通过socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等&#xff0c;这些方法都是本地端的状态&#xff0c;无法判断远端是否已经断开连接。2通过Outp…

几个数字的和

ctrl z 的使用 #include<iostream> using namespace std;main() {int num,sum0;while(cin>>num) {sumnum;}cout<<"和为"<<sum<<endl; } View Code#include<iostream> using namespace std; main() { int num,s…

sharepoint 2013基于AD的Form表单登录(三)——选择用户时,屏蔽掉AD。

//来源&#xff1a;http://www.cnblogs.com/lrforever/p/3695820.html 隐藏AD人员选择&#xff0c;$ad.IsVisible设置为true&#xff0c;则显示出AD里用户$cpm Get-SPClaimProviderManager $ad get-spclaimprovider -identity "AD" $ad.IsVisible $false $cpm.Up…

java synchronized boolean_java中synchronized关键字

代码示例&#xff1a;package com.test;/** x,y值为什么不能保持相同&#xff1b;**/public class Pair implements Runnable{boolean b false;private int x;private int y;public Pair(int x,int y){this.x x;this.y y;}public Pair(){}public void incrementX(){x;}publi…

网站在线压力测试工具Load Impact

关于Load ImpactLoad Impact是一个一个在线的网站压力测试服务及工具&#xff0c;模拟多用户同时访问你的站点&#xff0c;并出具报告以分析你的站点可以支撑的访问者数量&#xff0c;它能让你通过简单的几次点击就能测试出你的网站的性能。不过免费用户只能同时并发50个虚拟访…

Loading 遮蔽层 简单实现。

<!--背景div--><div id"bg" class"bg" style"display:none;text-align: center;"></div> <!--loading 图片 div --><div class"mydiv" id"popDiv"><img src"${root }/common/images/…