小米校招笔试真题&软件开发薪资爆料

1.5.1 矩阵相乘

【题目描述】

实现矩阵相乘函数void matrix_multiply(int* A, int* B, int* C, int M, int K, int N)

暂不考虑整型溢出,请尽可能优化运行速度。

参数说明:0 < M,K,N < 1000

C[M][N] = A[M][K] * B[K][N]

输入描述:

输入矩阵A和矩阵B的值:

M=2, K=3,N=2

A[2][3]={{1,2,3},{1,2,3}}

B[3][2]={{1,1},{1,1},{1,1}}

输出描述:

输出矩阵C的值:

C[2][2]={{6,6},{6,6}}

输入样例:

2 3 2

1 2 3

1 2 3

1 1

1 1

1 1

输出样例:

6 6

6 6

【解题思路】

三层循环实现矩阵相乘操作即可。

【参考代码】

#include <stdio.h>

#include <stdlib.h>

#include <assert.h>

#include <sys/time.h>

void matrix_multiply(int *A, int *B, int *C, int M, int K, int N) {

int i = 0;

int j = 0;

int k = 0;

for (i = 0; i < M; i++) {

for (j = 0; j < N; j++) {

int sum = 0;

for (k = 0; k < K; k++) {

sum += A[i * K + k] * B[k * N + j];

}

C[i * N + j] = sum;

}

}

}

void matrix_multiply_opt(int *A, int *B, int *C, int M, int K, int N) {

int i = 0;

int j = 0;

int k = 0;

for (k = 0; k < K; k++) {

for (i = 0; i < M; i++) {

int r = A[i * K + k];

for (j = 0; j < N; j++) {

C[i * N + j] += r * B[k * N + j];

}

}

}

}

int main(int argc, char **argv) {

int M, N, K;

scanf("%d%d%d", &M, &K,

&N); // printf("%d %d %d\n", M, N, K); assert(M>0 && M<=1000);

// assert(N>0 && N<=1000); assert(K>0 && K<=1000);

int *A = (int *)malloc(M * K * sizeof(int));

int *B = (int *)malloc(K * N * sizeof(int));

int *C = (int *)malloc(M * N * sizeof(int));

int i = 0;

while (i < M * K) {

scanf("%d", &A[i]); // printf("%d ", A[i]); // if ((i+1)%K==0) { //

// printf("\n"); // } i++;

}

i = 0;

while (i < K * N) {

scanf("%d", &B[i]); // printf("%d ", B[i]); // if ((i+1)%N==0) { //

// printf("\n"); // } i++;

}

matrix_multiply_opt((int *)A, (int *)B, (int *)C, M, K, N);

for (int i = 0; i < M; i++) {

for (int j = 0; j < N; j++) {

printf("%d ", C[i * N + j]);

}

printf("\n");

}

}

......

资料全部内容请看《2025届求职宝典-理工科版

不收费,2人组团即可免费领取!已经发出10000份,涵盖各大公司求职资料,助你事半功倍!

资料包含:

  • 30+大厂面试真题+解析
  • 软件方向:阿里、腾讯、百度、小米、华为、美团......
  • 硬件方向:华为、比亚迪、汇川、新华三、中兴、海康威视......
  • 机械方向:比亚迪、华为、美的、长江存储、宁德时代......
  • 30+大厂岗位薪资爆料
  • 30+大厂offer攻略

拿offer,别犹豫,点击马上领取>>https://www.nowcoder.com/link/campus_ziliao2024-tiezi12

电脑端请微信扫码>>

多说无益,直接上资料截图

每个方向专栏售价69元,但是参与2人组团就可免费领取

点击马上领取>>https://www.nowcoder.com/link/campus_ziliao2024-tiezi12

#软件开发薪资爆料#
全部评论

相关推荐

5 5 评论
分享
牛客网
牛客企业服务