矩阵乘法
题目描述
如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的:
原型:
voidmatrix_multiply(int *m1,int *m2,int *r, int x, int y, int z);
输入参数:
int *m1:x行y列的矩阵(array1[x][y])
int *m2:y行z列的矩阵(array2[y][z])
int x:矩阵m1的行数
int y:矩阵m1的列数/矩阵m2的行数
int z:矩阵m2的列数
输出参数:
int *r:矩阵m1, m2相乘的结果(array3[x][z])
返回值:
void
输入描述:
输入说明:
1、第一个矩阵的行数
2、第一个矩阵的列数和第二个矩阵的行数
3、第二个矩阵的列数
4、第一个矩阵的值
5、第二个矩阵的值
输出描述:
输出两个矩阵相乘的结果
输入例子:
2
2
2
3 8
8 0
9 0
18 9
输出例子:
171 72
72 0
解答代码:
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<fstream>
#define N 200
using namespace std;
int main()
{
//freopen("1.txt","r",stdin);
int row1,col1;//第一个矩阵的行和列
int row2,col2;//第二个矩阵的行和列
int array1[N][N];
int array2[N][N];
int array3[N][N];
int i,j,k;
while(cin>>row1>>col1>>col2)
{
row2=col1;
//输入第一个矩阵的值
for(i=0;i<row1;i++)
for(j=0;j<col1;j++)
cin>>array1[i][j];
//输入第二个矩阵的值
for(i=0;i<row2;i++)
for(j=0;j<col2;j++)
cin>>array2[i][j];
//矩阵乘法运算
for(i=0;i<row1;i++)
{
for(j=0;j<col2;j++)
{
array3[i][j]=0;
for(k=0;k<col1;k++)
array3[i][j]=array3[i][j]+array1[i][k]*array2[k][j];
cout<<array3[i][j];
if(j==col2-1)
cout<<endl;
else
cout<<' ';
}
}
}
return 0;
}