/*
题意:矩阵相乘的最少的步数
dp[i][j]=min(dp[i][j], dp[i][k]+dp[k+1][j]+num[i-1]*num[k]*num[j]);
表示的是第i个矩阵到第j个矩阵相乘的最少步数
sign[i][j]表示的是第i个矩阵到第j个矩阵相乘的最少步数是由第i个矩阵到第sign[i][j]个矩阵相乘最少步数
和第sign[i][j]+1个矩阵到第j个矩阵相乘最少步数的得到的最小值!
*/
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[][];
int sign[][];
int num[];
int ld[], rd[];
int n; void dfs(int l, int r){//将[l,r]不断分解成最优的子区间
if(sign[l][r]==) return ;
ld[l]++;//l数字出现了多少次,就意味着出现了多少次区间作值为l,也就是出现了多少次左括号
rd[r]++;//同理r右侧出现了多少次右括弧
dfs(l, sign[l][r]);
dfs(sign[l][r]+, r);
} void traceBack(){ memset(ld, , sizeof(ld));
memset(rd, , sizeof(rd));
dfs(, n);
for(int i=; i<=n; ++i){
while(ld[i]--) cout<<"(";
cout<<"A"<<i;
while(rd[i]--) cout<<")";
if(i!=n)
cout<<" x ";
}
cout<<endl;
} void traceBackTmp(int l, int r){//这是用递归的形式写的,将区间不断缩小,打印(Ai x Aj)
if(l>r) return;
if(l==r) printf("A%d", l);
else{
printf("(");
traceBackTmp(l, sign[l][r]);
printf(" x ");
traceBackTmp(sign[l][r]+, r);
printf(")");
}
} int main(){
int cnt, count=;
string s="";
s+=;
cout<<s<<endl;
while(scanf("%d", &n) && n){
int u, v;
cnt=;
scanf("%d%d", &num[cnt], &num[cnt+]);
cnt+=;
for(int i=; i<=n; ++i){
scanf("%d%d", &u, &v);
num[cnt++]=v;
}
n=cnt-;
memset(dp, 0x3f, sizeof(dp));
memset(sign, , sizeof(sign));
for(int i=; i<=n; ++i)
dp[i][i]=;
for(int x=; x<=n; ++x)
for(int i=; i+x-<=n; ++i){
int j=i+x-;
for(int k=i; k<j; ++k){
int tt=dp[i][k]+dp[k+][j]+num[i-]*num[k]*num[j];
if(dp[i][j]>tt){
dp[i][j]=tt;
sign[i][j]=k;
}
}
} cout<<"Case "<<++count<<": ";
traceBack(); // cout<<"Case "<<++count<<": ";
// traceBackTmp(1, n);
// cout<<endl;
}
return ;
}

UVAoj 348 - Optimal Array Multiplication Sequence的更多相关文章

  1. 矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence

    题目传送门 /* 题意:加上适当的括号,改变计算顺序使得总的计算次数最少 矩阵连乘积问题,DP解决:状态转移方程: dp[i][j] = min (dp[i][k] + dp[k+1][j] + p[ ...

  2. ZOJ 1276 Optimal Array Multiplication Sequence(矩阵连乘)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1276 裸的矩阵连乘问题. #include<iostream> ...

  3. ZOJ 1276 "Optimal Array Multiplication Sequence"(最优矩阵链乘问题+区间DP)

    传送门 •题意 矩阵 A(n×m) 和矩阵 B(m×k) 相乘,共做 n×m×k 次乘法运算: 给你 n 个矩阵,求这 n 个矩阵的最优结合方式,使得做的总乘法运算次数最少: •题解 定义dp(i,j ...

  4. UVA - 348Optimal Array Multiplication Sequence(递推)

    id=19208">题目:Optimal Array Multiplication Sequence 题目大意:给出N个矩阵相乘.求这些矩阵相乘乘法次数最少的顺序. 解题思路:矩阵相乘 ...

  5. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  6. 算法入门经典大赛 Dynamic Programming

    111 - History Grading LCS 103 - Stacking Boxes 最多能叠多少个box DAG最长路 10405 - Longest Common Subsequence ...

  7. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

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

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

  9. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

随机推荐

  1. LR loadrunner参数化-笔记

      LR在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用到的数值的脚本,如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询.提交等等),那么你必须用参数值取代 ...

  2. Restore Oracle database to another server

    1. Copy or remotely mount the backupset folder from the source server to the target server 2. On the ...

  3. java和android及IOS对接RSA加密经验

    1.网上找的java生成RSA密钥对的例子,产生的字附串实际上是hax后和密钥串 你可以将他们当成静态字附串存在java代码里 2.android和java可以代码复用,IOS对接比较麻烦 3.IOS ...

  4. FreeRTOS和Ucos在打开关闭中断的区别

  5. SubversionEdge 变更绑定地址

    接上一篇,由于VS的项目和SubversionEdge是通过固定的IP地址绑定在一起的,所以这就有个问题:如果由于种种原因,IP地址换了,那么绑定就失效了. 此时,VS项目的各种变更无法提交到Subv ...

  6. 蛙蛙推荐:WEB安全入门

    信息安全基础 信息安全目标 真实性:对信息的来源进行判断,能对伪造来源的信息予以鉴别, 就是身份认证. 保密性:保证机密信息不被窃听,盗取,或窃听者不能了解信息的真实含义. 完整性:保证数据的一致性, ...

  7. Jumony快速抓取网页 --- Jumony使用笔记--icode

    作者:郝喜路   个人主页:http://www.cnicode.com      博客地址:http://haoxilu.cnblogs.com    时间:2014年6月26日 19:25:02 ...

  8. 软件测试基本理论-IBM模式

    软件测试基本理论(1) IBM生产模式 1   参考书目 <IBM-从菜鸟到测试架构师-一个测试工程师的成长日记> 出版社:电子工业出版社 印次:2013年6月 作者:IBM主要工程师 2 ...

  9. 在.net中使用aquiles访问Cassandra(一)

    aquiles是.net下基于Thrift协议访问Cassandra的第三方类库,官方地址是: http://aquiles.codeplex.com/   1.下载类库文件: http://aqui ...

  10. [ACM_模拟] POJ1068 Parencodings (两种括号编码转化 规律 模拟)

    Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...