题目
描述:
题目描述:
矩阵相乘
输入:两个N*N阶矩阵相乘
输出:结果矩阵
样例输入:
{1, 2, 3}, {4, 5, 6}, {7, 8, 9}
{1, 2, 3}, {4, 5, 6}, {7, 8, 9}
样例输出:
{30, 36, 42}, {66, 81, 96}, {102, 126, 150}
接口说明:
原型:
int matrix(int **MatrixA, int **MatrixB, int **MatrixC, int N);
输入参数:
int **MatrixA 指向二维数组A
int **MatrixB 指向二维数组A
int N 二维数组大小
输出参数:
int **MatrixC
返回值:0:成功 1:失败
知识点:
工程环境请使用VS2005
题目来源: 软件训练营
维护人: d00191780
练习阶段: 中级
代码
/*---------------------------------------
* 日期:2015-06-30
* 作者:SJF0115
* 题目:矩阵相乘
* 来源:华为上机
-----------------------------------------*/
#include "oj.h"
#include <stdio.h>
/*
功能: 矩阵相乘
输入: MatrixA,MatrixB
输出: MatrixC
返回: 0
*/
int matrix(int **MatrixA, int **MatrixB, int **MatrixC, int N)
{
if(MatrixA == NULL || MatrixB == NULL || MatrixC == NULL || N <= 0){
return -1;
}//if
int a,b;
for(int i = 0;i < N;++i){
for(int j = 0;j < N;++j){
*((int*)MatrixC + i * N + j) = 0;
for(int k = 0;k < N;++k){
a = *((int*)MatrixA + i * N + k);
b = *((int*)MatrixB + k * N + j);
*((int*)MatrixC + i * N + j) += a * b;
}//for
}//for
}//for
return 0;
}