1357 矩陣乘法

來源:互聯網
上載者:User
 
描述

給定兩個矩陣 A (n*t) 和 B(t*m) ,請計算出C = A*B

輸入

第一行包含一個整數T,表示有T組測試資料。

以下每組測試資料格式:

第一行為3個正整數 N T M 分別表示矩陣A的N*T和矩陣B的T*M,均小於等於100.

接下來的N行,每行T個整數,描述矩陣A;

接下來得T行,每行M個整數,描述矩陣B。

每個數字範圍為[-100,100]。

輸出

輸出N*M行矩陣C

 

 

經典的問題,按照線性代數上面的步驟做即可

#include<stdio.h>#include <stdlib.h>// b[j][k] * c[k][i] = a[j][i]void matrix(int **b,int **c, int **a, int nx, int ny, int nk){int i,j,k;for (j=0;j<ny;j++)for(i=0;i<nx;i++)a[j][i]= 0;for(j=0;j<ny;j++){for(i=0;i<nx;i++){for(k=0;k<nk;k++)a[j][i]+= b[j][k]*c[k][i];};};}void main(){int i,j,k,tmp;int b_row,b_col;int c_row,c_col;int a_row,a_col;int **b,**c,**a;int number,te;int n,t,m;scanf("%d",&number);for(te=1;te<=number;te++){        scanf("%d %d %d",&n,&t,&m);// 輸入B 陣 行數 列數   b_row=n;   b_col=t;   c_row=t;   c_col=m;// 輸入C陣 列數a_row = b_row;a_col = c_col;a  = (int **) malloc(sizeof(int *) * a_row);for (j=0;j<a_row;j++){a[j] = (int *) malloc(sizeof(int) * a_col);}b  = (int **) malloc(sizeof(int *) * b_row);for (j=0;j<b_row;j++){b[j] = (int *) malloc(sizeof(int) * b_col);}c  = (int **) malloc(sizeof(int *) * c_row);for (j=0;j<c_row;j++){c[j] = (int *) malloc(sizeof(int) * c_col);}// 輸入B陣元素for (j=0;j<b_row;j++)for (i=0;i<b_col;i++){scanf("%d",&tmp);b[j][i] = tmp;}// 輸入C陣元素for (j=0;j<c_row;j++)for (i=0;i<c_col;i++){scanf("%d",&tmp);c[j][i] = tmp;}matrix( b ,c,a, a_col, a_row, b_col);for(j=0;j<a_row;j++){for (i=0;i<a_col;i++) printf("%d ",a[j][i]);printf("\n");}}} 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.