試題 演算法訓練 矩陣乘法

2021-10-23 06:23:05 字數 1889 閱讀 4161

思路:定義乙個函式,實現矩陣的乘法,列印的時候,按行列印即可,詳看**。

資源限制

時間限制: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 ...