[解题报告]【第35题】给定两个 a X b 和 c X d 的矩阵 ,求两个矩阵的乘积

简介: [解题报告]【第35题】给定两个 a X b 和 c X d 的矩阵 ,求两个矩阵的乘积

全文目录

 🎁主要知识点

            矩阵乘法

 📓课后习题

            面试题 01.08. 零矩阵

 📑写在最后

今天是c语言基础打卡的第35天,主要内容是矩阵的操作,希望大家能够理解呢,我就给大家记一下重点,给点课后题提示0.0。


相关链接:

【第35题】给定两个 a X b 和 c X d 的矩阵 ,求两个矩阵的乘积


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)


⏳全文大约阅读时间: 10min


🎁主要知识点

矩阵乘法

三重循环冲,就是模拟矩阵乘法的规则


void multiplyMatrix(int a, int b, int matA[maxn][maxn], int c, int d, int matB[maxn][maxn], int matRet[maxn][maxn]) {
    // assert(b == c);
    int i, j, k;
    for(i = 0; i < a; ++i) {
        for(j = 0; j < d; ++j) {
            matRet[i][j] = 0;
            for(k = 0; k < b; ++k) {
                matRet[i][j] += matA[i][k] * matB[k][j];  //  矩阵乘法的计算规则
             }
        }
    }
}


📓课后习题

面试题 01.08. 零矩阵

面试题 01.08. 零矩阵


编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。


解题思路


为了节约空间,可以利用第一行和第一列元素进行标记此行是否清零。为了第一列的元素能确定是否需要清零,可以用一个变量进行标记。

同时,为了防止第一行元素过早被污染,转换元素的时候最后再处理第一行。


void setZeroes(int** matrix, int matrixSize, int* matrixColSize){
    int m = matrixSize,n = matrixColSize[0];//记录行列值
    bool flag_col0 = false;
    for(int i = 0;i < m;++i){       //更新第一行第一列所有元素作为标记
        if(!matrix[i][0])   flag_col0 = true;   //记录第一列是否有0元素
        for(int j = 1;j < n; ++j){  //从第第二行开始更新第一行和第一列元素
            if(!matrix[i][j])
                matrix[i][0] = matrix[0][j] = 0;
        }
    }
    for(int i = m - 1; i >= 0; --i){//从最最后一行开始更新元素 防止覆盖 因为第一行为标记元素
        for(int j = 1;j < n;++j){   
            if((!matrix[i][0]) || (!matrix[0][j]))//有标记需要变成0
                matrix[i][j] = 0;
        }
        if(flag_col0)
            matrix[i][0] = 0;
    }
}


相关文章
|
20小时前
|
索引
编辑距离矩阵
编辑距离矩阵
37 0
|
20小时前
|
算法 测试技术 C++
【分解质因数 差分数组】2584. 分割数组使乘积互质
【分解质因数 差分数组】2584. 分割数组使乘积互质
【分解质因数 差分数组】2584. 分割数组使乘积互质
|
20小时前
|
存储 算法
leetcode1237. 找出给定方程的正整数解
leetcode1237. 找出给定方程的正整数解
8 0
|
20小时前
矩阵 螺旋矩阵
矩阵 螺旋矩阵
22 2
|
20小时前
leetcode-542:01 矩阵
leetcode-542:01 矩阵
18 0
|
7月前
|
算法 测试技术 C#
C++前缀和算法:构造乘积矩阵
C++前缀和算法:构造乘积矩阵
|
12月前
矩阵相加 / 矩阵相乘(详解版)
矩阵相加 / 矩阵相乘(详解版)
134 0
LeetCode 1329. 将矩阵按对角线排序
矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线,沿右下方向一直到矩阵末尾的元素。
87 0
Acwing 平方矩阵 C++
Acwing 平方矩阵 C++
98 0
Acwing 平方矩阵 C++
AcWing 754. 平方矩阵 II
AcWing 754. 平方矩阵 II
74 0
AcWing 754. 平方矩阵 II