UVA348矩阵链乘
来源:互联网 发布:淘宝一口价宝贝有效期 编辑:程序博客网 时间:2024/05/12 12:14
经典的DP题,表达式结构,个人认为记忆化搜索比递推简单些,而且更容易理解,这里贴上代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<cctype>#include<cmath>#include<algorithm>#include<string>#include<map>#include<queue>#include<stack>#include<set>#include<vector>#define LL long longusing namespace std;const int maxn=1e5+10;const double eps=1e-6;const int MAX_INT=(1<<31)-1;int x[15],y[15];int n;int d[15][15],r[15][15]; int dp(int a,int b){if(d[a][b]!=-1) return d[a][b];r[a][b]=a;if(a==b) return d[a][b]=0;d[a][b]=MAX_INT;int t;for(int i=a;i<b;i++){t=dp(a,i)+dp(i+1,b)+x[a]*y[i]*y[b];if(t<d[a][b]){d[a][b]=t;r[a][b]=i;}}return d[a][b];}void print(int a,int b){if(a>b) return;if(a==b)printf("A%d",a+1);else{printf("(");print(a,r[a][b]);printf(" x ");print(r[a][b]+1,b);printf(")");}}int main(){//cout<<MAX_INT;int cas=0;while(cin>>n&&n){memset(d,-1,sizeof(d));for(int i=0;i<n;i++)cin>>x[i]>>y[i];dp(0,n-1); printf("Case %d: ", ++cas); print(0, n - 1); cout<<endl;} return 0;}
0 0
- UVA348矩阵链乘
- uva348 最优矩阵链乘 经典区间dp
- 矩阵相乘(uva348)
- 最优矩阵链乘
- NYoj536 矩阵链乘
- uva442-矩阵链乘
- 矩阵链乘
- 矩阵链乘--uva10003
- 矩阵链乘
- 最优矩阵链乘
- 最小矩阵链乘
- 最优矩阵链乘
- poj1651 矩阵链乘
- UVA 矩阵链乘
- 矩阵链乘
- 矩阵链乘
- 最优矩阵链乘
- 矩阵链乘
- 189. Rotate Array
- Android Settings总结
- 飛飛(二十八)输入五组学生的姓名和成绩,输出最大值和最小值
- XMG 绘制形状
- Android的自定义View详解
- UVA348矩阵链乘
- nyoj 323 BUYING FEED 贪心
- Simpleware.ScanIP.ScanFE.ScanCAD.v3.1.WinNT_2K 1CD(口腔外科医学分析软件)\
- Android——小谈Android 6.0(棉花糖)
- iOS APP上架流程
- c++第五次上机实验
- 搜索待整理
- SWift开发:使用委托/Protocol 实现类之间的数据传递
- java写出大数据(千万级别)的excel探索(二)