矩阵相乘(uva348)
来源:互联网 发布:中国mysql用户组 编辑:程序博客网 时间:2024/06/06 04:44
题意:求矩阵相乘的最佳花括号的方式并打印出来
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<vector>#include<cmath>#include<queue>#include<stack>#include<map>#include<set>#include<algorithm>using namespace std;const int INF=0x3f3f3f3f;const int maxn=110;struct node{ int n,m;}a[maxn];int N;int dp[maxn][maxn];int path[maxn][maxn];void dfs(int x,int y){ if(x==y) { printf("A%d",x); return; } printf("("); dfs(x,path[x][y]); printf(" x "); dfs(path[x][y]+1,y); printf(")");}int main(){ int cas=1; while(scanf("%d",&N)!=EOF,N) { for(int i=1;i<=N;i++)scanf("%d%d",&a[i].n,&a[i].m); memset(dp,INF,sizeof(dp)); memset(path,-1,sizeof(path)); for(int i=1;i<=N;i++)dp[i][i]=0,path[i][i]=i; for(int len=1;len<=N;len++) { for(int i=1;i+len-1<=N;i++) { int j=i+len-1; for(int k=i;k<j;k++) { if(dp[i][k]+dp[k+1][j]+a[i].n*a[k].m*a[j].m<dp[i][j]) { dp[i][j]=dp[i][k]+dp[k+1][j]+a[i].n*a[k].m*a[j].m; path[i][j]=k; } } } } printf("Case %d: ",cas++); dfs(1,N); printf("\n"); } return 0;}
0 0
- 矩阵相乘(uva348)
- UVA348矩阵链乘
- uva348
- UVA348
- UVA348
- 数据结构--稀疏矩阵(相乘)
- 矩阵相乘(三元组)
- 矩阵相乘(分治法)
- 矩阵相乘(C案例)
- 蓝桥杯-矩阵相乘(java)
- 矩阵相乘法(稀疏矩阵)
- 矩阵乘法(两个矩阵相乘)
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- 矩阵相乘
- myeclipse 错误及处理方法
- 黑马程序员--Java语言基础补充
- 视觉直观感受 7 种常用的排序算法
- 接口养成指南简述
- 巧加括号
- 矩阵相乘(uva348)
- Two Sum III - Data structure design
- 罗援参与两会非瞎胡闹
- VC9中ATL的atlconv.h中A2W_CP和W2A_CP的Bug
- 使用Apache CXF搭建REST风格的Web Service
- 三人分蜜
- android图片显示的方向问题
- Android JNI 跨线程使用JniEnv
- Xcode使用Dyci动态注入代码