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个矩阵到第j个矩阵相乘的最少步数
 5     sign[i][j]表示的是第i个矩阵到第j个矩阵相乘的最少步数是由第i个矩阵到第sign[i][j]个矩阵相乘最少步数
 6     和第sign[i][j]+1个矩阵到第j个矩阵相乘最少步数的得到的最小值!
 7 */
 8 #include<iostream>
 9 #include<cstring>
10 #include<string>
11 #include<cstdio>
12 #include<algorithm>
13 using namespace std;
14 int dp[15][15];
15 int sign[15][15];
16 int num[15];
17 int ld[15], rd[15];
18 int n;
19 
20 void dfs(int l, int r){//将[l,r]不断分解成最优的子区间
21     if(sign[l][r]==0) return ;
22     ld[l]++;//l数字出现了多少次,就意味着出现了多少次区间作值为l,也就是出现了多少次左括号
23     rd[r]++;//同理r右侧出现了多少次右括弧
24     dfs(l, sign[l][r]);
25     dfs(sign[l][r]+1, r);
26 }
27 
28 void traceBack(){
29  
30    memset(ld, 0, sizeof(ld));
31    memset(rd, 0, sizeof(rd));
32    dfs(1, n);
33    for(int i=1; i<=n; ++i){
34        while(ld[i]--) cout<<"(";
35        cout<<"A"<<i;
36        while(rd[i]--) cout<<")";
37        if(i!=n)
38          cout<<" x ";
39    }
40    cout<<endl;
41 }
42 
43 void traceBackTmp(int l, int r){//这是用递归的形式写的,将区间不断缩小,打印(Ai x Aj)
44    if(l>r) return;
45    if(l==r)  printf("A%d", l);
46    else{
47       printf("(");
48       traceBackTmp(l, sign[l][r]);
49       printf(" x ");
50       traceBackTmp(sign[l][r]+1, r);
51       printf(")");
52    }
53 }
54 
55 int main(){
56     int cnt, count=0;
57     string s="";
58     s+=10;
59     cout<<s<<endl;
60     while(scanf("%d", &n) && n){
61         int u, v;
62         cnt=0;
63         scanf("%d%d", &num[cnt], &num[cnt+1]);
64         cnt+=2;
65         for(int i=2; i<=n; ++i){
66            scanf("%d%d", &u, &v);
67            num[cnt++]=v;
68         }    
69         n=cnt-1;
70         memset(dp, 0x3f, sizeof(dp));
71         memset(sign, 0, sizeof(sign));
72         for(int i=1; i<=n; ++i)
73            dp[i][i]=0;
74         for(int x=2; x<=n; ++x)
75           for(int i=1; i+x-1<=n; ++i){
76                int j=i+x-1;
77                for(int k=i; k<j; ++k){
78                    int tt=dp[i][k]+dp[k+1][j]+num[i-1]*num[k]*num[j];
79                    if(dp[i][j]>tt){
80                       dp[i][j]=tt;
81                       sign[i][j]=k;
82                    }
83                }
84           }
85     
86       cout<<"Case "<<++count<<": ";
87       traceBack();
88 
89      // cout<<"Case "<<++count<<": ";
90      // traceBackTmp(1, n);
91      // cout<<endl;
92     }
93     return 0;
94 }

 

转载于:https://www.cnblogs.com/hujunzheng/p/3915841.html

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

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

相关文章

raft协议 MySQL 切换_Raft 协议实战系列(二)—— 选主

注&#xff1a;本文原创&#xff0c;转载请标明出处。欢迎转发、关注微信公众号&#xff1a;Q的博客。 不定期发送干货&#xff0c;实践经验、系统总结、源码解读、技术原理。本文目的笔者期望通过系列文章帮助读者深入理解Raft协议并能付诸于工程实践中&#xff0c;同时解读不…

codeforce Pashmak and Buses(dfs枚举)

1 /*2 题意&#xff1a;n个同学&#xff0c;k个车&#xff0c; 取旅游d天&#xff01;3 要求所有的学生没有两个或者两个以上的在同一辆车上共同带d天&#xff01; 输出可行的方案&#xff01;4 5 对于d行n列的矩阵&#xff0c;第i行第j列表示的是第i天第j个同学所…

怎样用mysql查询测试_如何测试数据库查询优化器

我一直认为&#xff0c;查询优化器(Query Optimizer&#xff0c;后面简称优化器)一直是数据库领域 Top 级别的 hardcore 技术&#xff0c;自己也一直尝试去深入理解&#xff0c;但每每看到 TiDB 代码里面那一大坨 plan 的代码&#xff0c;我就望而生畏了&#xff0c;就像是『可…

poj2060Taxi Cab Scheme(二分图匹配)

1 /*2 题意&#xff1a; 出租车 有一个出发的时间&#xff0c;从点&#xff08;a, b&#xff09;到点&#xff08;c, d&#xff09;&#xff0c;时间为3 abs(a-c)abs(b-d)! 一辆车可以在运完一个乘客后运另一个乘客, 4 条件是此车要在预约开始前一分钟之前到达出发地,…

二级java考什么_计算机二级Java考试资料!

Where领&#xff1f;基本要求1 . 掌握 Java 语言的特点&#xff64;实现机制和体系结构&#xff61;2 . 掌握 Java 语言中面向对象的特性&#xff61;3 . 掌握 Java 语言提供的数据类型和结构&#xff61;4 . 掌握 Java 语言编程的基本技术&#xff61;5 . 会编写 Java 用户界面…

二分匹配最大匹配的理解(附图解)

定义一个PXP的有向图中&#xff0c;路径覆盖就是在图中找一些路径&#xff0c;使之覆盖了图中的所有顶点&#xff0c;且任何一个顶点有且只有一条路径与之关联&#xff1b;&#xff08;如果把这些路径中的每条路径从它的起始点走到它的终点&#xff0c;那么恰好可以经过图中的每…

poj 2226 Muddy Fields(合理建图+二分匹配)

1 /*2 题意&#xff1a;用木板盖住泥泞的地方&#xff0c;不能盖住草。木板任意长&#xff01;可以重叠覆盖&#xff01; *表示泥泞的地方&#xff0c;.表示草&#xff01;3 思路&#xff1a;4 首先让我们回忆一下HDU 2119 Matrix这一道题&#xff0c;一个矩阵…

java验证码工具_java 验证码工具

importjavax.imageio.ImageIO;import java.awt.*;importjava.awt.image.BufferedImage;importjava.io.IOException;importjava.io.OutputStream;importjava.util.Random;public classCaptchaUtils {private final static Object lock newObject();/*** 图片的宽度。*/private …

Floyd算法的理解

转载于:https://www.cnblogs.com/hujunzheng/p/3919226.html

http get post java_java发送http的get、post请求实现代码

Http请求类package wzh.Http;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.util.List;import java.util.Map;public class HttpRe…

java string的作用_浅谈java String不可变的好处

一、java内部String类的实现&#xff1a;java 8&#xff1a;public final class Stringimplements java.io.Serializable, Comparable, CharSequence {/** The value is used for character storage. */private final char value[];}java 9 及之后&#xff1a;(使用coder标识了…

34988 Happy Reversal(二进制去取反)

1 /*2 题意&#xff1a;给多个二进制数&#xff0c;对某些数进行按位取反操作&#xff01;3 然后从中找到最大数和最小数&#xff0c;并输出他们的差值&#xff01; 4 注意&#xff1a;所有的数都是整数&#xff0c;包括取反之后5 6 思路&#xff1a;一个n为二进…

java vim ide_Vim配置Java IDE

首先安装vim (当然做java 开发要装jdk 这个就不说了)emerge -av vim (gentoo 系统上安装vim 的命令,你可以用rpm ,apt-get )给vim 安装 javacomplete 插件http://www.vim.org/scripts/script.php?script_id1785 这个插件的作用是实现一部分代码提示功能 比如你输入 System…

java中线程存活和线程执行的问题!

1 /*2 下面的程序会出现下面的情况&#xff0c;当Thread-0&#xff0c; Thread-1&#xff0c; Thread-2都被wait的时候&#xff0c;可能会同时苏醒3 Thread-0 put4 Thread-1 put5 Thread-2 put6 Thread-3 get//在此处&#xff0c;Thread-3拿到锁之后&#xff0…

java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)...

import java.util.concurrent.locks.*; class DuckMsg{int size;//烤鸭的大小String id;//烤鸭的厂家和标号DuckMsg(){}DuckMsg(int size, String id){this.sizesize;this.idid;}public String toString(){return id " 大小为:" size;} } class Duck{private int …

java encode 空格_javaWeb中URLEncoder.encode空格问题

近期开发一个在线坐席的功能。发现推送的消息中空格变成了 。查询发现URLEncoder.encode的问题。曾经用的时候也没注意过&#xff0c;解决的方法网上是对URLEncoder.encode的之后的字符串进行替换号&#xff0c;这样的方式假设真的有号那也被替换了。所以应该在URLEncoder.enco…

poj 1386 Play on Words(有向图欧拉回路)

1 /*2 题意&#xff1a;单词拼接&#xff0c;前一个单词的末尾字母和后一个单词的开头字母相同3 思路&#xff1a;将一个单词的开头和末尾单词分别做两个点并建一条有向边&#xff01;然后判断是否存在欧拉回路或者欧拉路 4 5 再次强调有向图欧拉路或欧拉回路的判定方法&…

java web tomcat 实例_Java Web应用开发实例

[1&#xff0e;GIS的概念 1&#xff0e;1什么是gis 地理信息系统 (GIS, Geographic Information System) 是一种基于计算机的工具&#xff0c;它可以对在地球上存在的东西和发生的事件进行成图和分析。 GI上次提到了EclipseTomcatLomboz Java Web开发环境的配置&#xff0c;可环…

poj2513Colored Sticks(无向图的欧拉回路)

1 /*2 题意&#xff1a;将两端涂有颜色的木棒连在一起&#xff0c;并且连接处的颜色相同&#xff01;3 思路&#xff1a;将每一个单词看成一个节点&#xff0c;建立节点之间的无向图&#xff01;判断是否是欧拉回路或者是欧拉路4 5 并查集判通 奇度节点个数等于2或…

java java.lang.enum_源码阅读-java基础-java.lang.Enum

1、引言枚举类型是 JDK 5 之后引进的一种非常重要的引用类型&#xff0c;可以用来定义一系列枚举常量。相比与常量(public static final定义)&#xff0c;在安全性、指意性、可读性方面更胜一筹。另外它可以和switch case搭配使用。2、类定义实际上在使用关键字enum创建枚举类型…