您的位置:首页 > 其它

华为oj矩阵相乘2

2016-03-06 16:37 357 查看
#include "oj.h"
#include <stdio.h>

int main()
{
int i=0,j=0;
int A[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int B[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int C[3][3] = {0};

matrix((int **)A, (int **)B, (int **)C, 3);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",C[i][j]);
}
printf("\n");
}

return 0;
}

/*
功能: 矩阵相乘

输入: MatrixA,MatrixB

输出: MatrixC

返回: 0

*/

int matrix(int **MatrixA, int **MatrixB, int **MatrixC, int N)
{
int i, j, k;
int a, b;
if(MatrixA == NULL || MatrixB == NULL || MatrixC == NULL)
{
return -1;
}

for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
*((int *)MatrixC + i*N +j) = 0;	//转化成一维数组,MatrixC[i][j]
for(k=0;k<N;k++)
{
a = *((int *)MatrixA + i*N + k); //MatrixA[i][k],对于MatrixA,行i是确定的
b = *((int *)MatrixB + k*N + j); //MatrixB[k][j],对于MatrixB,列j是确定的
*((int *)MatrixC + i*N + j) += a*b;
}
}
}

return 0;
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: