69 矩陣乘法

2021-09-10 07:02:14 字數 1695 閱讀 3412

題目描述

如果a是個x行y列的矩陣,b是個y行z列的矩陣,把a和b相乘,其結果將是另乙個x行z列的矩陣c。這個矩陣的每個元素是由下面的公式決定的:

原型:voidmatrix_multiply(int *m1,int *m2,int *r, int x, int y, int z);

輸入引數:

int *m1:x行y列的矩陣(array1[x][y])

int *m2:y行z列的矩陣(array2[y][z])

int x:矩陣m1的行數

int y:矩陣m1的列數/矩陣m2的行數

int z:矩陣m2的列數

輸出引數:

int *r:矩陣m1, m2相乘的結果(array3[x][z])
返回值:

void
輸入描述:

輸入說明:

1、第乙個矩陣的行數

2、第乙個矩陣的列數和第二個矩陣的行數

3、第二個矩陣的列數

4、第乙個矩陣的值

5、第二個矩陣的值

輸出描述:

輸出兩個矩陣相乘的結果

示例1輸入22

23 8

8 09 0

18 9

輸出171 72

72 0

思路:1.將矩陣分別儲存成二維列表matrix1,matrix2;

2.對矩陣2按列取值,生成新的二維列表matrix2r;

3.取matrix1、matrix2r的每個子列表相乘求和

def multi(m1,m2):#列表m1與列表m2每個元素相乘得到的和

eachsum=0

for i in range(len(m1)):

eachsum+=m1[i]*m2[i]

return eachsum

while true:

try:

row1=int(input())

row2=int(input())

col2=int(input())

matrix1=

matrix2=

for i in range(row1):

eachrow=[int(i) for i in input().split()]

for i in range(row2):

eachrow=[int(i) for i in input().split()]

matrix2r=#matrix2按列取得到的矩陣

# print(matrix1)

# print(matrix2)

for j in range(col2):

temp=#定義乙個臨時列表,每列的元素組成乙個temp

for i in range(row2):

eachcol=matrix2[i][j]

# print(matrix2r)

for i in range(row1):

for j in range(col2-1):#每行前n-1列最後輸出空白,最後一列換行

print(multi(matrix1[i],matrix2r[j]),end=' ')

print(multi(matrix1[i],matrix2r[-1]))

except:

break

矩陣乘法 矩陣乘法的基本實現

求解關於兩個矩陣的乘積 參考線性代數裡面的兩個矩陣相乘的規則,我這裡不再贅述,詳情附上了乙個鏈結,我的程式設計也是用了裡面的例子 這裡寫鏈結內容 具體的過程我會在 片裡面加上注釋 矩陣乘法 author seen 2015 09 18 include using namespace std int ...

mysql 矩陣乘法 矩陣乘法高階操作

對於矩陣乘法的一些操作 我們 其實 大部分是 多追加乙個係數 或者和 其他演算法連在一起。至於核心無非就是 先列出dp 方程再優化 或者 直接 對題目進行建模 構建矩陣。至於矩陣乘法的正確性 形狀的正確性 是可以證明的 但是內部最真實的正確性我還無法證明。這道題是 字串型別的題目 求方案數 很煩 大...

矩陣乘法 C

using system using system.collections.generic using system.text namespace exe03 static void main string args int martixb new int int martixc new int m...