系列文章目录
前言
一、HJ70矩阵乘法计算量估算
描述: 矩阵乘法的运算量与矩阵乘法的顺序强相关
例如: A是一个5010的矩阵,B是1020的矩阵,C是205的矩阵
计算AB*C有两种顺序:((AB)C)或(A(BC)),前者需要计算15000次乘法,后者只需要3500次
编写程序计算不同的计算顺序需要进行的乘法次数
数据范围: 矩阵个数:1<=n<=15,行列数:1<=row,col<=100,保证给出的字符串表示的计算顺序唯一
进阶: 时间复杂度:O(n),空间复杂度:O(n)
输入描述: 输入多行,先输入要计算乘法的矩阵个数n,每个矩阵的行数,列数,总共2n的数,最后输入要计算的法则计算
的法则为一个字符串,仅由左右括号和大写字母组成,保证括号是匹配的且输入合法。
示例:
输入:
3
50 10
10 20
20 5
(A()BC)
输出:
3500
二、sound code
代码如下(示例):
while True:
try:
n = int(input())
arr = []
order = []
res = 0
for i in range(n):
arr.append(list(map(int,input().split())))
f = input()
for i in f:
if i.isalpha():# 判断字符串是不是由字母组成
# ord(str)返回字母的ASCCI码,大写A-Z 范围是[65,90]
order.append(arr[ord(i)-65])
elif i == ")" and len(order) >=2: # 非字母,确定括号边界
b = order.pop()#最后一位
a = order.pop()#倒数第二位
res += a[1]*b[1]*a[0]
order.append([a[0],b[1]])
print(res)
except:
break
总结
分享:
独特的思想是无可替代的。思想者应该更多地到无路可走、无人走的地方走一走,记述一些独特的视角下所发现的独到见识。
独步是人生的一种天职,是回归生命本源的一种尝试,是探索未知世界的一种乐趣。