返回列表 發帖

d481 "矩陣乘法" -2010/11/6

本帖最後由 buy 於 2010-10-30 11:32 編輯

http://zerojudge.tw/ShowProblem?problemid=d481

內容 : 正體->简体
        矩陣相乘最重要的方法當然是一般矩陣乘積了,它只有在第一個矩陣的列數  (column)和第二個矩陣的行數(row)相同時才有定義。一般單指矩陣乘積時,指的便是  一般矩陣乘積。若A為m×n矩陣,B為n×p矩陣,則他們的乘積AB(有時記做A · B)會是  一個m×p矩陣。其乘積矩陣的元素如下面式子得出:

以上是用矩陣單元的代數系統來說明這類乘法的抽象性質。

由定義直接計算

左邊的圖表示出要如何計算AB的(1,2)和(3,3)元素,當A是個4×2矩陣和B是個2×3矩陣時。分別來自兩個矩陣的元素都依箭頭方向而兩兩配對,把每一對中的兩個元素相乘,再把這些乘積加總起來,最後得到的值即為箭頭相交位置的值。



內容來源:維基百科
http://zh.wikipedia.org/wiki/矩陣乘法

        每組測資有 2 個矩陣,請把他們相乘之後的結果輸出

輸入說明 :
全部數字不會超過 2^31-1

兩矩陣大小不超過 100 * 100



每組測資第一行四個數字 a b c d

代表第一個矩陣有 a 列 b 行

  第二個矩陣有 c 列 d 行

接下來 a 行,每行 b 個數字

    c 行,每行 d 個數字

每個數字以空白隔開

不懂請參考範例輸入

輸出說明 :
輸出相乘之後的矩陣

每個數字以空白隔開

兩矩陣不能相乘請輸出 Error 再換下一組測資 ( 不用讀取矩陣 )

範例輸入 :

3 2 2 3 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4
範例輸出 :

9 12 15 19 26 33 29 40 51 Error

  1. #include<iostream>
  2. using namespace std;

  3. int main(){
  4.    
  5.     int a,b,c,d,i,j,k,l,m,n,r,q;
  6.    
  7.    
  8.     while(cin>>a>>b>>c>>d){
  9.     if(b==c){
  10.          
  11.           int x[a][b];
  12.           int y[c][d];                       
  13.                            
  14.           for(i=0;i<a;i++){
  15.               for(j=0;j<b;j++){
  16.                    cin>>x[i][j];     
  17.                                }            
  18.                            }
  19.          
  20.           for(k=0;k<c;k++){
  21.               for(l=0;l<d;l++){
  22.                    cin>>y[k][l];     
  23.                                }            
  24.                            }                           
  25.                            

  26.          
  27.           for(m=0;m<a;m++){
  28.               for(n=0;n<d;n++){
  29.                 //某些程式碼
  30.                   for(r=0;r<b;r++){
  31.                     //某些程式碼   
  32.                                    }
  33.                   
  34.                    //某些程式碼
  35.                                }
  36.                  //某些程式碼           
  37.                            }                 
  38.          
  39.   
  40.                    }

  41.     else cout<<"Error\n";
  42. }
  43.    
  44.     return 0;
  45.     }
複製代碼

TOP

返回列表