矩形连乘问题c语言,矩阵连乘问题

矩阵连乘问题

Time Limit:1000MS Memory Limit:65536K

Total Submit:5 Accepted:0

Description

两个矩阵A和B相乘的条件是A的列数等于B的行数。若A是一个i*k矩阵,B是一个k*j矩阵,则其乘积C=AB是一个i*j矩阵。我们知道要经过i*k*j次数乘得到C。

由于矩阵乘法满足结合律,在计算一个大于2个矩阵的乘法时有多种乘法策略。打个比方,X,Y和Z都是矩阵,我们要求XYZ。我们可以计算(XY)Z或者X(YZ).假如X是一个5*10的矩阵,Y是一个10*20的矩阵,Z是一个20*35的矩阵。我们来看下这两种不同的乘法,要经过多少次数乘得到要得到的矩阵。

(XY)Z

1. 5*20*10=1000次数乘,得到(XY)的乘积,它是一个5*20的矩阵。

2. 5*35*20=3500次数乘,得到最后要求的矩阵。

3. 总共用了4500次数乘。

X(YZ)

1. 10*35*20=7000次数乘,得到(YZ)的乘积,它是一个10*35的矩阵。

2. 5*35*10=1750次数乘,得到最后要求的矩阵。

3. 总共用了8750次数乘。

我们清楚地发现用(XY)Z能用较少的数乘得到最后结果。

现在,给你一串要乘得矩阵序列A1,A2,...,An.让你决定一种乘法策略得到A1A2...An相乘的结果,所使用的数乘的次数最少。

Input

第一行有一个正整数n(n<11),表示有n个矩阵。接着有n行,每行有2个正整数(都不大于1000),表示一个矩阵的行和列。这n行对应A1,A2,...,An.

有多组测试数据。

Output

对于每组测试数据,输出得到A1A2...An相乘结果,所使用最少的数乘的次数。

Sample Input

3

1 5

5 20

20 1

3

5 10

10 20

20 35

6

30 35

35 15

15 5

5 10

10 20

20 25

Sample Output

105

4500

15125

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值