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

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

CLRS 15.2

#include 
#include
#include
int m[101][101];int s[101][101];void matrix_chain_order(int p[], int n){ for(int i=1; i<=n; i++) m[i][i] = 0; for(int l=2; l<=n; l++) { for(int i=1; i<=n-l+1; i++) { int j = i + l - 1; m[i][j] = INT_MAX; for(int k=i; k<=j-1; k++) { int q = m[i][k] + m[k+1][j] + p[i-1] * p[k] * p[j]; if(q < m[i][j]) { m[i][j] = q; s[i][j] = k; } } } }}void print_optimal_parens(int i, int j){ if(i == j) printf("A%d", i); else { printf("("); print_optimal_parens(i, s[i][j]); print_optimal_parens(s[i][j]+1, j); printf(")"); }}int main(){ int p[7] = {30, 35, 15, 5, 10, 20, 25}; memset(m, 0, sizeof(int)*101*101); memset(s, 0, sizeof(int)*101*101); matrix_chain_order(p, 6); printf("%d\n", m[1][6]); print_optimal_parens(1, 6); return 0;}

转载地址:http://qxnbb.baihongyu.com/

你可能感兴趣的文章
详解 LSTM
查看>>
按时间轴简述九大卷积神经网络
查看>>
详解循环神经网络(Recurrent Neural Network)
查看>>
为什么要用交叉验证
查看>>
用学习曲线 learning curve 来判别过拟合问题
查看>>
用验证曲线 validation curve 选择超参数
查看>>
用 Grid Search 对 SVM 进行调参
查看>>
用 Pipeline 将训练集参数重复应用到测试集
查看>>
PCA 的数学原理和可视化效果
查看>>
机器学习中常用评估指标汇总
查看>>
什么是 ROC AUC
查看>>
Bagging 简述
查看>>
详解 Stacking 的 python 实现
查看>>
简述极大似然估计
查看>>
用线性判别分析 LDA 降维
查看>>
用 Doc2Vec 得到文档/段落/句子的向量表达
查看>>
使聊天机器人具有个性
查看>>
使聊天机器人的对话更有营养
查看>>
一个 tflearn 情感分析小例子
查看>>
attention 机制入门
查看>>