背景
矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的列數和第二個矩陣的行數相同時纔有意義。一般單指矩陣乘積時,指的便是一般矩陣乘積。一個m×n的矩陣就是m×n個數排成m行n列的一個數陣。由於它把許多數據緊湊的集中到了一起,所以有時候可以簡便地表示一些複雜的模型。
描述
輸入兩個矩陣,輸出它們的乘積。無意義時輸出error。
輸入格式
每個矩陣:
一行,兩個數,表示矩陣的行數、列數。
後面若干行,這個矩陣每一項的值。
方式:通過鍵盤輸入
輸出格式
輸出相乘的結果。
方式:通過屏幕輸出
測試樣例
輸入
2 3 1 2 3 4 5 6 3 2 1 4 2 5 3 6
輸出
14 32 32 77
參考程序:
#include<iostream>
using namespace std;
int main()
{
int *A,*B,*C;
int a1,a2,b1,b2,c1,c2;
int i,j,k;
cin>>a1>>a2;
A=new int[a1*a2];
for(i=0;i<a1;i++)
{
for(j=0;j<a2;j++)
cin>>A[i*a2+j];
}
cin>>b1>>b2;
B=new int[b1*b2];
for(i=0;i<b1;i++)
{
for(j=0;j<b2;j++)
cin>>B[i*b2+j];
}
if(a2!=b1)
{
cout<<"error"<<endl;
}
else
{
c1=a1;
c2=b2;
C=new int[c1*c2];
for(i=0;i<c1;i++)
for(j=0;j<c2;j++)
{
C[i*c2+j]=0;
for(k=0;k<a2;k++)
C[i*c2+j]=C[i*c2+j]+A[i*a2+k]*B[k*b2+j];
}
for(i=0;i<c1;i++)
{
for(j=0;j<c2;j++)
{cout<<C[i*c2+j]<<" ";}
cout<<endl;
}
}
return 0;
}
如程序有錯誤或者你有什麼建議,歡迎你的留言!