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

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

1 #include
2 #include
3 #define MAXN 1000000 4 void Matrix_Chain_Order(int * p, int * s, int N) 5 { 6 int n = N - 1; 7 int m[N][N]; 8 for(int i = 1; i <= n; i++) 9 {10 m[i][i] = 0; 11 } 12 for(int l = 2; l <= n; l++) /*l是链的长度*/13 {14 for(int i = 1; i <= n - l + 1; i++)15 {16 int j = i + l - 1;17 m[i][j] = MAXN; 18 int q; 19 for(int k = i; k <= j - 1; k++)20 {21 q = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j];22 if(q < m[i][j])23 {24 m[i][j] = q;25 *(s + i * N + j) = k; 26 } 27 } 28 } 29 } 30 }31 32 void Print_Optimal_Parens(int * s, int i, int j, int N)33 {34 if(i == j)35 {36 printf("A%d",i); 37 } 38 else39 {40 printf("(");41 Print_Optimal_Parens((int *)s, i, *(s + i * N + j), N);42 Print_Optimal_Parens((int *)s, *(s + i * N + j)+1, j, N);43 printf(")"); 44 }45 }46 47 int main()48 {49 int P[7] = {
30,35,15,5,10,20,25};50 int S[7][7];51 Matrix_Chain_Order(P,(int *)S,7);52 Print_Optimal_Parens((int *)S,1,6,7);53 system("pause");54 return 0; 55 }

转载于:https://www.cnblogs.com/Java-tp/archive/2012/11/25/2787789.html

你可能感兴趣的文章
HTTP协议 (四) 缓存
查看>>
python学习之random
查看>>
使用onclick跳转到其他页面/跳转到指定url
查看>>
【转载】测试计划模板
查看>>
pandas 修改指定列中所有内容
查看>>
ubuntu18.04 复制或剪切某文件夹下的前x个文件到另一个文件夹下
查看>>
input的value中有特殊字符
查看>>
字符串压缩
查看>>
用Lua定制Redis命令
查看>>
小程序-canvas在IOS手机层级最高无法展示问题
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
解决win8使用内置管理员不能打开应用商城、天气等问题
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
globalization与全球化
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
关于在Idea 创建Maven项目时,无法在source文件下创建servlet文件问题解决!
查看>>
对 HTTP 304 的理解
查看>>
深入理解css中的margin属性
查看>>