华为机考攻略(python)--数组【1题】(第一题HJ70矩阵乘法计算量估算)

57 篇文章 4 订阅

系列文章目录


前言

一、HJ70矩阵乘法计算量估算

描述: 矩阵乘法的运算量与矩阵乘法的顺序强相关
例如: A是一个5010的矩阵,B是1020的矩阵,C是205的矩阵
计算A
B*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

总结

分享:
独特的思想是无可替代的。思想者应该更多地到无路可走、无人走的地方走一走,记述一些独特的视角下所发现的独到见识。
独步是人生的一种天职,是回归生命本源的一种尝试,是探索未知世界的一种乐趣。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若竹之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值