zoukankan      html  css  js  c++  java
  • 【题解】矩阵合并

    题目描述

    矩阵合并在学习线段代数时的一个内容, 它可以将一个A行B列的矩阵与一个B行C列
    的矩阵进行合并,合并的代价为ABC.注意第一个矩阵的列数必须与第二个矩阵
    的行数相等,只有这样才能合并。现在给 出N个矩阵,希望你将它们最终成一个矩阵,
    并希望合并的总代价越小越好。
    (总代价就是每次合并的代价的总和)
    输入

    第一行给出一个数字N.(N<=100)
    下面N行,每行两个数,代表一个矩阵的行、列数
    输出

    合并所需的最小的代价
    样例
    输入

    3
    1 5
    5 20
    20 1

    输出

    105

    题解

    区间DP,和能量项链这道题形似,可以去看看。

    #include<bits/stdc++.h>
    using namespace std;
    int n,num[1010],a[10101],dp[1010][1010];
    int main(){
    	cin >> n;
    	for(int i=1;i<=n;i++){
    		cin >> num[i]>>a[i];
    	}
    	for(int i=2;i<=n;i++){
    		for(int j=1;j<=n-i+1;j++){
    			int k=j+i-1;
    			dp[j][k]=1e9;
    			for(int l=j;l<=k-1;l++){
    				dp[j][k]=min(dp[j][k],dp[j][l]+dp[l+1][k]+num[j]*a[l]*a[k]);
    			}
    		}
    	}
    	cout<<dp[1][n];
    	return 0;
    }
    
  • 相关阅读:
    mysql max(),min()的优化
    统计网站某天的点击数
    小程序网络图片下载
    小程序封装
    小程序 封装调用
    小程序request封装
    git 使用
    MYSQL查询语句优化
    微信开发遇到的坑
    PHP支付宝支付开发流程
  • 原文地址:https://www.cnblogs.com/rebirth-death2019/p/13778738.html
Copyright © 2011-2022 走看看