標題:
d481 "矩陣乘法" -2010/11/6
[打印本頁]
作者:
buy
時間:
2010-10-30 10:28
標題:
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
作者:
buy
時間:
2010-10-30 10:32
#include<iostream>
using namespace std;
int main(){
int a,b,c,d,i,j,k,l,m,n,r,q;
while(cin>>a>>b>>c>>d){
if(b==c){
int x[a][b];
int y[c][d];
for(i=0;i<a;i++){
for(j=0;j<b;j++){
cin>>x[i][j];
}
}
for(k=0;k<c;k++){
for(l=0;l<d;l++){
cin>>y[k][l];
}
}
for(m=0;m<a;m++){
for(n=0;n<d;n++){
//某些程式碼
for(r=0;r<b;r++){
//某些程式碼
}
//某些程式碼
}
//某些程式碼
}
}
else cout<<"Error\n";
}
return 0;
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/)
Powered by Discuz! 7.2