矩阵连乘问题动态规划算法
2018-03-20 17:12
190 查看
#include"stdio.h" int m[7][7],s[7][7]; int p[7]; void MatrixChain(int n, int *p, int m[7][7], int s[7][7]) { int i, j, k, r, tmp; for(i=1;i<=n;i++) m[i][i]=0; for(r=2;r<=n;r++) { for(i=1;i<=n-r+1;i++) { j=i+r-1; m[i][j]= m[i+1][j]+p[i-1]*p[i]*p[j]; s[i][j]=i; for(k=i+1;k<j;k++) { tmp=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j]; if(tmp<m[i][j]) { m[i][j]=tmp; s[i][j]=k; } } } } } void Traceback(int i, int j, int s[7][7]){ if(i==j) return; Traceback(i, s[i][j], s); Traceback(s[i][j]+1, j, s); printf("Multiply A%d,%d",i,s[i][j]); printf("and A%d,%d\n",s[i][j]+1,j); } int main() { p[0]=30;p[1]=35;p[2]=15;p[3]=5;p[4]=10;p[5]=20;p[6]=25; MatrixChain(6, p, m, s); Traceback(1,6,s); return 0; }
相关文章推荐
- 矩阵连乘问题的动态规划算法(java)
- 动态规划算法——矩阵连乘问题
- 动态规划算法——矩阵连乘问题(java实现)
- 矩阵连乘问题(动态规划算法+备忘录方法)
- 矩阵连乘问题
- (基于Java)算法之动态规划——矩阵连乘问题
- 矩阵连乘的动态规划算法(包括递归的备忘录方法)
- 动态规划——矩阵连乘的问题
- 动态规划—矩阵连乘问题
- 动态规划 矩阵连乘问题
- 动态规划-3.1.3矩阵连乘问题之备忘录方法(自顶向下)
- 矩阵连乘问题
- n个矩阵连乘问题
- 动态规划-矩阵连乘问题
- 动态规划问题3-矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 区间DP问题(矩阵连乘,石子合并,括号匹配)
- 动态规划 - 矩阵连乘问题(笔记)