背景
矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个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;
}
如程序有错误或者你有什么建议,欢迎你的留言!