ZOJ1276 Optimal Array Multiplication Sequence dp
2014-07-23 10:01
429 查看
#include<stdio.h> #include<string.h> int r[15]; int d[15][15],save[15][15]; int dp(int i,int j) { if(d[i][j]!=0)return d[i][j]; if(i==j)return 0; int min=1<<30; for(int k=i;k<j;k++) { int t=dp(i,k)+dp(k+1,j)+r[i]*r[k+1]*r[j+1];<span style="font-family: Arial, Helvetica, sans-serif;">//d(i,j)=min(d(i,k)+d(k+1,j)+ri*r(k+1)+r(j+1);</span> if(t<min){min=t;save[i][j]=k;} } return d[i][j]=min; } void show(int i,int j) { if(j-i>1) { printf("("); show(i,save[i][j]); printf(" x "); show(save[i][j]+1,j); printf(")"); } else if(j-i==1) { printf("(A%d x A%d)",i,j); } else printf("A%d",i); } int main() { int n,i,k=1,j; while(~scanf("%d",&n)&&n) { for(i=1;i<=n;i++) scanf("%d%d",&r[i],&r[i+1]); memset(d,0,sizeof(d)); for(i=1;i<=n;i++) for(j=1;j<=n;j++) dp(i,j); printf("Case %d: ",k++); show(1,n); printf("\n"); } return 0; }
相关文章推荐
- zju/zoj 1276 Optimal Array Multiplication Sequence(dp)
- UVA 348 & ZOJ 1276 Optimal Array Multiplication Sequence(dp , 矩阵链相乘问题)
- ZOJ 1276 Optimal Array Multiplication Sequence
- zoj 1276 Optimal Array Multiplication Sequence
- ZOJ 1276 Optimal Array Multiplication Sequence
- ZOJ 1276 Optimal Array Multiplication Sequence
- 矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
- zoj 1276 Optimal Array Multiplication Sequence
- ZOJ 1276 Optimal Array Multiplication Sequence(矩阵连乘)
- UVa 348 Optimal Array Multiplication Sequence (区间DP&矩阵链乘,MCM)
- UVA 348 Optimal Array Multiplication Sequence 最优矩阵链乘 区间DP
- Optimal Array Multiplication Sequence UVA - 348 (最优矩阵链乘+递归输出路径+区间dp)
- Optimal Array Multiplication Sequence+uva+简单区间dp
- zoj1276 Optimal Array Multiplication Sequence(DP)
- UVA 348 Optimal Array Multiplication Sequence(区间dp)
- AYITACM2016省赛第三周I - Optimal Array Multiplication Sequence(dp)
- uva 348 Optimal Array Multiplication Sequence(区间dp)
- UVa 348 Optimal Array Multiplication Sequence (DP 最优矩阵链乘)
- Optimal Array Multiplication Sequence - UVa 348 dp
- uva 348 Optimal Array Multiplication Sequence (DP)