您的位置:首页 > 职场人生

谷歌面试:实现两个N*N矩阵的乘法,矩阵由一维数组表示

2012-10-08 21:57 330 查看
这个题主要是弄清楚那一部分是行,哪一部分是列就可以了。

代码使用了三个变量来实现不同行和列的递增。

行和列相乘的函数,如下:

#define size 2
int * multi(int* a, int* b, int N)
{
int i,j,k,temp;
int * c = (int *)malloc(N*N);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
temp = i*N + j;
*(c+temp) = 0;
for(k=0;k<N;k++)
{
*(c+temp) += a[i*N + k]*b[k*N + j];
}
printf("%d ",*(c+temp));
}
}
return c;
}
main函数如下:

void main()
{
int a[size*size] = {2,1,4,3};
int b[size*size] = {1,-1,3,2};
multi(a,b,size);
printf("\n");
}


结果如下:



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