UVA 348 DP 矩阵乘法 输出结果
来源:互联网 发布:卡西欧自拍神器软件 编辑:程序博客网 时间:2024/05/17 23:59
递归输出结果。
矩阵乘法每一格消耗O(n),结果行数等于左矩阵行数,列数等于右边列数。
res中存的分割点将[s,t]分为[s,k][k+1,t]是闭区间表示法
字符串与数字之间的转换看这篇文章
#include<stdio.h>#include<string.h>#include<algorithm>#include<string>#include<sstream>using namespace std;int dp[20][20];int res[20][20];int n;int row[20];int col[20];const int INF=0x3f3f3f3f;string resString(int s,int t){if(s==t){stringstream ss;ss<<t;string ts;ss>>ts;ts="A"+ts;return ts;}int k=res[s][t];string ts="";if(k==s)ts+=resString(s,k);elsets+="("+resString(s,k)+")";ts+=" x ";if(k+1==t)ts+=resString(k+1,t);elsets+="("+resString(k+1,t)+")";return ts;}int main(){int T=1;while(scanf("%d",&n)&&n!=0){for(int i=1;i<=n;i++)scanf("%d%d",&row[i],&col[i]);for(int i=0;i<20;i++){for(int j=0;j<20;j++){if(i!=j)dp[i][j]=INF;elsedp[i][j]=0;}}for(int l=2;l<=n;l++){for(int i=l;i<=n;i++){int s=i-l+1;int t=i;for(int j=i-l+1;j<i;j++){int cost=dp[s][j]+dp[j+1][t]+row[s]*row[j+1]*col[t];if(dp[s][t]>cost){res[s][t]=j;dp[s][t]=cost;}}}}string resS="";resS+="("+resString(1,n)+")";const char* a=resS.c_str(); printf("Case %d: %s\n",T++,a);}}
- UVA 348 DP 矩阵乘法 输出结果
- 【区间DP】矩阵乘法
- 【DP】矩阵链乘法
- 矩阵乘法优化DP
- dp 最优矩阵乘法
- hdu6185 dp+矩阵乘法
- 矩阵乘法优化DP
- UVA 10870 Recurrences 矩阵乘法
- UVA 10870 Recurrences 矩阵乘法
- 【Contra】 矩阵乘法优化 dp
- 【bzoj3120】Line dp+矩阵乘法
- BZOJ 1009 DP+矩阵乘法
- 【DP】poj1651 <矩阵链乘法>
- bzoj 1875 矩阵乘法dp
- poj3744 概率dp+矩阵乘法
- 决战 dp+矩阵乘法+NTT
- 【DP+压缩矩阵+矩阵乘法】阅读
- uva 10870 - Recurrences(矩阵乘法)
- 使用SqlDependency监听SqlServer2005数据库变更通知
- jquery mobile 基本使用
- Objective-C 基础语法log打印那些事儿(一)
- Apache下PHP的三种工作方式
- eclipse快捷键
- UVA 348 DP 矩阵乘法 输出结果
- 开发 Eclipse 插件
- 父类引用指向子类对象
- java js 日期处理
- client测试demo_1
- android startActivityForResult 使用实例
- hive随谈(hive操作create,alter等)
- spring rabbitMQ
- 十进制换成2进制