HJ69 题解 | #矩阵乘法#

矩阵乘法

https://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b

#纯数学问题,模拟

x=int(input())#矩阵1的行
y=int(input())#矩阵1的列、矩阵2的行
z=int(input())#矩阵2的列
jz1=[]#矩阵1
jz2=[]#矩阵2
# ans=[[0]*z]*x#结果

ans=[[0 for k in range(z)] for i in range(x)]
#接收矩阵
for i in range(x):
    jz1.append([int(j) for j in input().split()])

for i in range(y):
    jz2.append([int(j) for j in input().split()])


#计算结果
for i in range(x):#矩阵1的行
    for j in range(y):#矩阵1的列、矩阵2的行
        for k in range(z):#矩阵2的列
            ans[i][k]+=jz1[i][j] * jz2[j][k]
#输出结果
for i in range(x):
    for j in range(z):
        print(ans[i][j],end=" ")
    print()

AC代码以及思路如上,我就一个问题:为什么第10行的初始化,第8行那样写就不行,我测试过是可以正常初始化的,但是提交就过不了,很奇怪!

#华为##华为od##华为机试##华为od机试#
华为HJ103所有解法 文章被收录于专栏

这是我准备华为od面试的专属专栏,我会把自己的解法更新在里面,我会尽量写清楚自己的思路以及多写关键注释,希望对阅读的人有帮助~~~

全部评论
喔喔 我知道了 第8行那种是浅拷贝 ans的所有元素共享一个内存地址,这在后续需要累加求ans的时候就会出问题,这也就是第8行那种代码会得到所有元素一样的列表的原因。
点赞 回复 分享
发布于 2023-01-20 22:09 四川

相关推荐

07-23 12:04
门头沟学院 Java
现在是很缺人吗
码农索隆:缺分母,不缺分子,这样好作为炫耀的资本
点赞 评论 收藏
分享
allin秋招的单身...:我投过这家 上来就发个设计图给我,让我做好发到他邮箱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务