博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划~~矩阵链乘法
阅读量:4506 次
发布时间:2019-06-08

本文共 2114 字,大约阅读时间需要 7 分钟。

基于自底向上的动态规划  1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 #define MAX 1000 9 using namespace std;10 11 12 int a[MAX] = { 0}, dp[MAX][MAX] = { 0},path[MAX][MAX] = { 0}, n;13 14 void matrix_chain_order(){15 for(int r = 2; r <= n; r ++ ){16 for(int i = 1; i <= n-r; i ++){17 int j = i+r-1;18 dp[i][j] =dp[i][i]+dp[i+1][j]+a[i]*a[i+1]*a[j+1];19 path[i][j] = i;20 for(int k=i+1; k < j; k ++){21 if( dp[i][j] > dp[i][k] + dp[k+1][j] + a[i]*a[k+1]*a[j+1] ){22 dp[i][j] = dp[i][k] + dp[k+1][j] + a[i]*a[k+1]*a[j+1];23 path[i][j] = k;24 }25 }26 }27 }28 }29 30 void print_optimal_parens(int i, int j){31 if( i == j ) {cout<<'A'<
> T;44 while(T--){45 cin >> n ;46 memset(a,0,sizeof(a));47 for(int i = 1; i <= n; i ++ ) cin >>a[i];48 memset(dp,0,sizeof(dp));49 memset(path,0,sizeof(path));50 matrix_chain_order();51 52 cout<<"(";53 print_optimal_parens(1,n-1);54 cout<<")"<

 

基于备忘录的自顶向下的动态规划  1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 #define MAX 1000 9 #define INF 100000010 using namespace std;11 12 13 int a[MAX] = { 0}, dp[MAX][MAX] = { 0},path[MAX][MAX] = { 0}, n;14 15 int lookup_chain(int i,int j){16 if(dp[i][j] < INF) return dp[i][j];17 if(i == j ) return 0;18 int u = lookup_chain(i,i)+lookup_chain(i+1,j) + a[i]*a[i+1]*a[j+1];19 path[i][j] = i;20 for(int k = i+1; k < j; k ++ ){21 int t = lookup_chain(i,k)+lookup_chain(k+1,j)+a[i]*a[k+1]*a[j+1];22 if(t < u){23 u = t;24 path[i][j] = k;25 }26 }27 dp[i][j] = u;28 return u;29 }30 31 void print_optimal_parens(int i, int j){32 if( i == j ) {cout<<'A'<
> T;45 while(T--){46 cin >> n ;47 memset(a,0,sizeof(a));48 for(int i = 1; i <= n; i ++ ) cin >>a[i];49 memset(dp,INF,sizeof(dp));50 memset(path,0,sizeof(path));51 lookup_chain(1,n);52 53 cout<<"(";54 print_optimal_parens(1,n-1);55 cout<<")"<

 

转载于:https://www.cnblogs.com/xiongqiangcs/archive/2013/04/06/3002888.html

你可能感兴趣的文章
const与#define相比有什么不同?
查看>>
Eclipse4.7 SpringIDE插件的安装
查看>>
C#面向对象基础
查看>>
adb server is out of date. killing...
查看>>
Jquery页面加载效果
查看>>
ios对new Date() 的兼容问题
查看>>
Spark发展现状与战线
查看>>
Charles常用设置
查看>>
filebeat
查看>>
如何在Bitmap中画图?(MFC)
查看>>
Windows 用来定位 DLL 的搜索路径
查看>>
常见的游戏设计技术
查看>>
Backbone 学习笔记五
查看>>
R语言:各种零碎
查看>>
Mysql5.7修改root密码
查看>>
docker入门3:基础操作(2)
查看>>
WC2019退役失败记
查看>>
Centos6.6下安装nginx1.6.3
查看>>
iOS开发之多线程
查看>>
[算法竞赛]第七章_暴力求解法
查看>>