题目大意:
输入t ;t为测试用例个数
接下来t个测试 每个测试用例
第一行输入n; n为矩阵个数 保证n个矩阵依序是可乘的
接下来n行 每行输入p,q;p为长度q为宽度
对给定的n个矩阵确定一个计算次序使得总的乘法次数最少
并输出该最优值
Sample Input

1
4
50 10
10 40
40 30
30 5

Sample Output

10500

理论讲解

https://www.cnblogs.com/Jason-Damon/p/3231547.html

https://blog.csdn.net/wangmengmeng99/article/details/50134673

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
int a[],dp[][];
//int pre[55][55];
// /* pre[i][j]=k 即 i到j之间由k断开
// 借此输出最小乘数的表达式 */
//void print_chain(int i, int j)
//{ // 递归输出最小连乘的表达式
// if (i==j) printf("矩阵%d",i);
// else
// {
// printf("(");
// print_chain(i,pre[i][j]);
// printf("*");
// print_chain(pre[i][j]+1,j);
// printf(")");
// }
//}
int main()
{
int t;
while(~scanf("%d",&t))
{
while(t--)
{
int n; scanf("%d",&n);
for(int i=;i<=n;i++)
{
int p,q; scanf("%d%d",&p,&q);
if(i==) a[]=p; a[i]=q;
} // 第一个存行和列 之后的只存列 //memset(pre,0,sizeof(pre));
memset(dp,INF,sizeof(dp)); // 初始化无穷大
for(int i=;i<=n;i++) dp[i][i]=;
/// 只有本身一个矩阵时 矩阵乘积为0 for(int i=;i<=n;i++) /// 枚举矩阵个数 由从小推大
for(int l=;l<=n-i+;l++) /// 枚举左端下标
{
int r=l+i-; // 根据个数 得到右端下标
dp[l][r]=dp[l+][r]+a[l-]*a[l]*a[r];
/// dp[l][r]视为 l矩阵*(dp[l+1][r])矩阵
//pre[l][r]=l; for(int k=l+;k<r;k++)
dp[l][r]=min(dp[l][r],
dp[l][k]+dp[k+][r]+a[l-]*a[k]*a[r]);
/// dp[l][r]视为 (dp[l][k])矩阵*(dp[k+1][r])矩阵 // 当需要记录 pre[][] 时
// {
// int tmp=dp[l][k]+dp[k+1][r]+a[l-1]*a[k]*a[r];
// if(tmp<dp[l][r]) dp[l][r]=tmp, pre[l][r]=k;
// }
}
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=n;j++)
// printf("%d ",pre[i][j]);
// // printf("%d ",dp[i][j]);
// printf("\n");
// }
// print_chain(1,n); // 最小连乘表达式
// printf("\n");
printf("%d\n",dp[][n]); // 最小连乘次数
}
} return ;
}

最新文章

  1. java入门知识点结构
  2. NMAKE:fatal error U1077.“\..\.cl.exe” return code 0xc0000135
  3. Bootstrap系列 -- 41. 带表单的导航条
  4. VIM自动补全插件 - YouCompleteMe--&quot;大神级vim补全插件&quot;
  5. objective c,copy, mutableCopy区别
  6. 2014年值得学习的25个PS CS6教程(一)
  7. FireMonkey vs. VCL (FMX的UI更灵活,图形效果更强,硬件加速,内嵌3D,使用浮点数更精确,跨平台,可使用Mida converter转换和TFireMonkeyContainer内嵌)
  8. centos6.5安装vsftpd
  9. android ScrollView中嵌套listview listview可点击处理,可展开
  10. seajs加载jquery提示$ is not a function
  11. EclipseIDE--使用整理
  12. 【译】使用 Flutter 实现跨平台移动端开发
  13. 【论文速读】XiangBai_CVPR2018_Rotation-Sensitive Regression for Oriented Scene Text Detection
  14. c/c++ 线性表之单向循环链表
  15. linux 根据Pid获取 进程内容
  16. gitlab的fork及源项目的同步
  17. 【疑难杂症】gdb调试多线程程序报错:interrupted system call
  18. Python 默认值字典
  19. nodejs在后台运行
  20. Android 8 wifi 扫描时间间隔

热门文章

  1. delphi Treeview用法
  2. Perl 循环
  3. 阿里巴巴AI夺肝结节诊断两项世界冠军,至今无人超越
  4. 语音识别(Web Speech API)
  5. NX二次开发-UFUN删除链表函数UF_MODL_delete_list
  6. 2018-2019-2-20175323 java实验四 Android程序设计
  7. Matlab求三重积分
  8. sql基础学习
  9. input输入内容成可点击状态
  10. 几个实用的js函数