CCF-CSP真题训练第二题-《202305矩阵运算》-python

文章讲述了在解决CCF-CSP真题中的矩阵运算问题时,作者遇到运行超时挑战,通过调整矩阵运算顺序、优化代码和使用debug技巧最终解决问题。详细展示了Python代码和优化后的思路。
摘要由CSDN通过智能技术生成

1.真题来源

首页 - 计算机软件能力认证考试系统

2.重点

要是矩阵乘法运算,点乘运算和转置运算。根据运算法则并结合数组下标利用for循环编写相关函数。

3.运行结果

在这里插入图片描述

PS:在矩阵乘法运算中花了很长时间,先是根据运算法则利用for循环,理清下标之间的关系花了很长时间,第二是写完出错了,通过print函数检查错误点在矩阵乘法这个函数的编写,之后通过debug发现在求和过程有些问题,一步步去看去算最终才解决。因此,在问题出现时不要害怕,也不要停滞不前,一步步去查,多一点耐心,在才开始没想明白的时候可以用笨一点的方法一点点去验算结果是否准确。运行超时了。参考了CCF-CSP真题《202305-2 矩阵运算》思路+python,c++满分题解_矩阵运算csp-CSDN博客发现,运行超时可通过改变矩阵运算的先后顺序改变。对比两个解题思路,我是直接写了一个运算函数,具有一般性,参考的代码是解决该问题。

4.Python运行代码

n, d = map(int, input().split())
Q = [[i for i in map(int, input().split())]for j in range(n)]
K = [[i for i in map(int, input().split())]for j in range(n)]
V = [[i for i in map(int, input().split())]for j in range(n)]
W = [i for i in map(int, input().split())]

def zhuanzhi(K):
    K_T = []
    for i in range(d):
        K_T_1 = []
        for j in range(n):
            K_T_1.append(K[j][i])
        K_T.append(K_T_1)
    return K_T


def jucheng(Q, K):
    juchen = []
    x = len(Q)
    y = len(Q[0])
    z = len(K[0])
    for i in range(x):
        juchen_1 = []
        for k in range(z):
            sum = 0
            for j in range(y):
                sum += Q[i][j] * K[j][k]
            juchen_1.append(sum)
        juchen.append(juchen_1)
    return juchen

def diancheng(W, Q):
    x = len(Q)
    y = len(Q[0])
    X = []
    for i in range(x):
        X_1 =[]
        for j in range(y):
            X_1.append(W[i]*Q[i][j])
        X.append(X_1)
    return X

output = jucheng(diancheng(W, jucheng(Q, zhuanzhi(K))), V)

for i in range(len(output)):
    for j in range(len(output[0])):
        print(output[i][j], end=' ')
        print(end='\n')

5.根据参考思路更改后

在这里插入图片描述

5.1代码如下

output = diancheng(W, jucheng(Q, jucheng(zhuanzhi(K), V)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值