CCF刷题记录 -- 202305-2:矩阵运算 --python解法

2023.12.7 

主要算法 

  • 矩阵置换
  • 矩阵相乘

满分注意点

  • 运算顺序,利用了矩阵运算法则中的(A*B)*c = A*(B*C)
# 矩阵置换
def zhihuan(a):
    b=[]
    for i in range(d):
        c = []
        for j in range(n):
            c.append(a[j][i])
        b.append(c)
    return b

# 矩阵相乘
def ju_zheng_chen_fa(a,b):
    c,c_1=[],[]
    for i in range(len(a)):
        for bj in range(len(b[0])):
            sum=0
            for j in range(len(b)):
                sum += a[i][j]*b[j][bj]
            c_1.append(sum)
        c.append(c_1)
        c_1=[]
    return c

# w·矩阵
def dian_cheng(w,b):
    c,c_1=[],[]
    for i in range(len(w)):
        for j in range(len(b[0])):
            c_1.append(b[i][j] * w[i])
        c.append(c_1)
        c_1=[]
    return c

n,d = list(map(int,input().split()))
list_q = [list(map(int,input().split())) for i in range(n)]
list_k = [list(map(int,input().split())) for i in range(n)]
list_v = [list(map(int,input().split())) for i in range(n)]
list_w = list(map(int,input().split()))

#计算顺序:k的转置*v -> k的转置*v*q -> k的转置*v*q*w
list_wqktv = dian_cheng(list_w,ju_zheng_chen_fa(list_q,ju_zheng_chen_fa(zhihuan(list_k),list_v)))

for i in list_wqktv:
    print(' '.join(list(map(str,i))))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Z时代.bug(゜▽゜*)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值