思路
这种题目没有什么高深的坑,思路就是用模拟的方式计算,不过肯定会有时间、空间复杂度低的方法,只是我现在暂时还没开始想到,毕竟处理这种细琐的计算过程真的很费时间费精力。。。。
# 202305-2 矩阵运算
# n, d代表矩阵的大小,n-行,d-列,例如2*3
# n, d = int(input().split(' '))
n, d = input().split(' ')
n = eval(n)
d = eval(d)
Q = []
K = []
V = []
W = []
temp = []
num = []
最终结果 = []
# 接收Q
for i in range(n):
Q.append(input().split(' '))
# 接收K
for i in range(n):
K.append(input().split(' '))
# 先开始计算Q*K^T啦~
for i in range(n):
temp = []
for x in range(n):
numTemp = 0
for y in range(d):
numTemp += (eval(Q[x][y]) * eval(K[i][y]))
temp.append(numTemp)
num.append(temp)
# 输入V
for i in range(n):
V.append(input().split(' '))
# 接收W
W.append(input().split(' '))
# 开始计算与向量W的点乘
for x in range(n):
for y in range(n):
num[y][x] = num[y][x] * eval(W[0][x])
# 开始计算与V的乘积
for i in range(d):
temp = []
for x in range(n):
numTemp = 0
for y in range(n):
numTemp += num[y][x] * eval(V[y][i])
temp.append(numTemp)
最终结果.append(temp)
for i in range(n):
for x in range(d):
print(最终结果[x][i], end=' ')
print()
OJ判题结果
超时了,时间、空间复杂度太高,慢慢想想怎么优化吧