面试实习生时,面试官出了一道手写编程题:实现矩阵相乘
代码如下:
#include
using namespace std;
int** multiply(int (*A)[3], int B[][3], int M, int K, int N) {
//int *C = new int[M]; //一维申请数组
int **C = new int*[M];
for (int i = 0; i < M; i++)
C[i] = new int[N];
for (int m = 0; m < M; m++)
for (int n = 0; n < N; n++){
C[m][n] = 0;
for (int k = 0; k < K; k++)
C[m][n] += A[m][k] * B[k][n];
}
return C;
}
void main() {
int A[2][3] = { 1,1,1,1,1,1 };
int B[3][3] = {1,2,3,4,5,6,7,8,9};
int **C;
C=multiply(A, B, 2, 3, 3);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
cout << C[i][j] << ' ';
cout << endl;
}
system("pause");
}
目前还不知道如何将A和B维度字母化传入函数,需要再学习一下二维数组传入函数的方式。
往后再贴一个相应的GPU加速的代码。