您的位置:首页 > 其它

九度 题目1489:计算两个矩阵的乘积

2014-07-25 13:34 316 查看
题目来源:http://ac.jobdu.com/problem.php?pid=1489

题目1489:计算两个矩阵的乘积

时间限制:1 秒

内存限制:128 兆

特殊判题:否

提交:2850

解决:608

题目描述:

计算两个矩阵的乘积,第一个是2*3,第二个是3*2

输入:

输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵

输出:

一个2*2的矩阵(每一个数字后都跟一个空格)

样例输入:
1 2 3
3 4 5
6 7
8 9
10 11


样例输出:
52 58
100 112


来源:2012年哈尔滨工业大学计算机研究生机试真题

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;
const int MAXN = 3;

struct MatrixNode
{
int iMatrix[MAXN][MAXN];
MatrixNode()
{
memset(iMatrix, 0, sizeof(iMatrix));
}
};
typedef MatrixNode Matrix;

Matrix Multi_Matrix(Matrix a, Matrix b, int iRow1, int iCol1, int iRow2, int iCol2)
{
Matrix iCell;
int i, j, k;
for(i = 0; i < iRow1; ++i)
{
for(j = 0; j < iCol2; ++j)
{
iCell.iMatrix[i][j] = 0;
for(k = 0; k < iCol1; ++k)
iCell.iMatrix[i][j] += a.iMatrix[i][k] * b.iMatrix[k][j];
}
}
return iCell;
}

int main()
{
int i, j;
Matrix a, b, c;
while(scanf("%d %d %d", &a.iMatrix[0][0], &a.iMatrix[0][1], &a.iMatrix[0][2]) != EOF)
{
for(i = 1; i < 2; ++i)
for(j = 0; j < 3; ++j)
scanf("%d", &a.iMatrix[i][j]);
for(i = 0; i < 3; ++i)
for(j = 0; j < 2; ++j)
scanf("%d", &b.iMatrix[i][j]);
c = Multi_Matrix(a, b, 2, 3, 3, 2);
for(i = 0; i < 2; ++i)
{
for(j = 0; j < 2; ++j)
printf("%d ", c.iMatrix[i][j]);
printf("\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: