思路:定義乙個函式,實現矩陣的乘法,列印的時候,按行列印即可,詳看**。
資源限制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
輸入兩個矩陣,分別是m*s,s*n大小。輸出兩個矩陣相乘的結果。
輸入格式
第一行,空格隔開的三個正整數m,s,n(均不超過200)。
接下來m行,每行s個空格隔開的整數,表示矩陣a(i,j)。
接下來s行,每行n個空格隔開的整數,表示矩陣b(i,j)。
輸出格式
m行,每行n個空格隔開的整數,輸出相乘後的矩陣c(i,j)的值。
樣例輸入23
210-
111-
3031
231樣例輸出-3
2-82
提示矩陣c應該是m行n列,其中c(i,j)等於矩陣a第i行行向量與矩陣b第j列列向量的內積。
例如樣例中c(1,
1)=(
1,0,
-1)*
(0,1
,3)=
1*0+
0*1+
(-1)
*3=-
3
**:
def
fun(m,s,n)
:'''
矩陣相乘
'''for i in
range
(m):
# mfor j in
range
(n):
# n num =
0for k in
range
(s):
# s num += s1[i]
[k]* s2[k]
[j] c[i]
[j]= num
return c
if __name__ ==
"__main__"
:# m*s,s*n的矩陣
nums =
list
(map
(int
,input()
.split())
) m = nums[0]
s = nums[1]
n = nums[2]
c =[[
0]* n for j in
range
(m)]
# m * n 值為0的矩陣
s1 =
s2 =
a = m # 計數
b = s # 計數
while a >0:
# 矩陣1
list
(map
(int
,input()
.split())
))a -=
1while b >0:
# 矩陣2
list
(map
(int
,input()
.split())
))b -=
1 c = fun(m,s,n)
for i in
range
(len
(c))
: count =
0# 計數
for j in
range
(len
(c[0])
):print
(c[i]
[j],end=
' ')
count +=
1if count ==
len(c[0]
):# 判斷該行是否列印完
print()
# 列印完一行就換行
演算法訓練 矩陣乘法
問題描述 輸入兩個矩陣,分別是m s,s n大小。輸出兩個矩陣相乘的結果。輸入格式 第一行,空格隔開的三個正整數m,s,n 均不超過200 接下來m行,每行s個空格隔開的整數,表示矩陣a i,j 接下來s行,每行n個空格隔開的整數,表示矩陣b i,j 輸出格式 m行,每行n個空格隔開的整數,輸出相乘...
演算法訓練 矩陣乘法
問題描述 輸入兩個矩陣,分別是 m s,s n 大小。輸出兩個矩陣相乘的結果。輸入格式 第一行,空格隔開的三個正整數 m,s,n。接下來 m 行,每行 s 個空格隔開的整數,表示矩陣 a。接下來 s 行,每行 n 個空格隔開的整數,表示矩陣 b。輸出格式 m 行,每行 n 個空格隔開的整數,輸出相乘...
演算法訓練 矩陣乘法
時間限制 1.0s 記憶體限制 512.0mb 問題描述 輸入兩個矩陣,分別是m s,s n大小。輸出兩個矩陣相乘的結果。輸入格式 第一行,空格隔開的三個正整數m,s,n 均不超過200 接下來m行,每行s個空格隔開的整數,表示矩陣a i,j 接下來s行,每行n個空格隔開的整數,表示矩陣b i,j ...