博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
矩阵链乘 Matrix Chain Multiplication Uva442
阅读量:3950 次
发布时间:2019-05-24

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

题目描述:

输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数。如果乘法无法进行,输出error。假定A是m*n矩阵,B是n*p矩阵,那么AB是m*p矩阵,乘法次数为m*n*p。如果A的列数和B的行数不同,则乘法无法进行。
例如,A是50*10,B是10*20的,C是20*5的,则(A(BC))的乘法次数是10*20*5(BC的乘法次数)+50*10*5(A(BC)的乘法次数)=3500
输入:首先输入矩阵数量n,接下来n行输入矩阵的字母及其第一二维的基数,接下来一行输入需要计算的表达式。
输出:对于每一个表达式有一个输出,即需要乘法的次数,若乘法无法进行则输出error

样例输入输出

在这里插入图片描述
代码源自算法竞赛入门经典(刘汝佳编著)P142
本文只是增添一些注释
代码如下:

//6-3 矩阵链乘#include 
#include
#include
#include
using namespace std;struct Matrix{
int a,b; Matrix(int a=0,int b=0):a(a),b(b){
};//构造函数}m[26]; //26个字母代表式子中不同的变量,每一个变量代表一个矩阵stack
s;//用于存放未参与计算的变量(字母)int main(){
int n; //字母数量 cin>>n; for(int i=0;i
>name; int k=name[0]-'A'; cin>>m[k].a>>m[k].b; } string expr;//保存需要计算的式子 while(cin>>expr){ int len=expr.length(); bool _judge=true; //判断这个式子能否计算 int ans=0;//保存需要乘法的次数 for(int i=0;i

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

你可能感兴趣的文章
redhat 9 下sqlite 3的安装及编程
查看>>
两个同步表的字段复制.Oracle.
查看>>
windows MySQL 报“Got a packet bigger than 'max_allowed_packet' bytes”错误,解决过程.
查看>>
在Redhat9下静态编译glib库.
查看>>
CImg库编译使用.
查看>>
SQL Server循环执行动态SQL语句.
查看>>
ubuntu10.4网卡名由eth0改为eth4,导致获得不了IP地址.解决方法.
查看>>
CheckPoint关键词做字段名使用.
查看>>
Qt QSplitte分割器使用(用户手动改变窗口大小)
查看>>
Qt动态加载动态库
查看>>
java8新特性
查看>>
git clone时RPC failed; curl 18 transfer closed with outstanding read data remaining
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)
查看>>
maven中jar、war、pom的区别
查看>>
maven之pom.xml配置文件详解
查看>>
java基础学习之抽象类与接口的区别
查看>>
java基础学习之包、类、方法、属性、常量的命名规则
查看>>
java基础知识学习之匿名内部类
查看>>
SSM框架和SSH框架的区别
查看>>
Elasticsearch-基础介绍及索引原理分析
查看>>