c++矩阵——超实用的数据结构

2025-06-24 12:16:54 29

文章目录

  • C++中的矩阵介绍
    • 什么是矩阵?
    • C++中的矩阵表示
    • 矩阵的运算
      • 矩阵加法
      • 矩阵减法
      • 矩阵乘法
      • 矩阵转置
      • 这里是一道模板题:矩阵快速幂
    • 总结
  • 结语

C++中的矩阵介绍

什么是矩阵?

矩阵是一个二维的数学结构,由行和列组成。在C++中,我们可以使用数组或者向量来表示矩阵。矩阵广泛应用于线性代数、图像处理、机器学习等领域。

C++中的矩阵表示

在C++中,我们可以使用数组来表示矩阵。例如,一个3 × 3 3×3 3×3的矩阵可以表示为一个二维数组,如下所示:

intmatrix[3][3]={ { 1,2,3},{ 4,5,6},{ 7,8,9}};

我们可以通过指定矩阵的行和列来访问特定的元素。例如,要访问矩阵的第二行第三列的元素,可以使用以下代码:

intelement =matrix[1][2];// 第二行第三列的元素为6

除了使用数组,我们还可以使用向量来表示矩阵。向量是C++标准库中提供的容器,可以动态地调整大小。通过使用向量,我们可以更方便地进行矩阵操作。例如,要表示一个3 × 3 3×3 3×3的矩阵,可以使用以下代码:

#include<vector>std::vector<std::vector<int>>matrix ={ { 1,2,3},{ 4,5,6},{ 7,8,9}};

矩阵的运算

在C++中,我们可以对矩阵进行各种运算,包括加法、减法、乘法等。

矩阵加法

矩阵加法是指对两个矩阵对应位置的元素进行相加。例如,对于两个3 × 3 3×3 3×3的矩阵A A AB B B,它们的和矩阵C的第i行第j列的元素可以通过以下公式计算:

C [ i ] [ j ] = A [ i ] [ j ] + B [ i ] [ j ] C[i][j] = A[i][j] + B[i][j] C[i][j]=A[i][j]+B[i][j]

矩阵减法

矩阵减法是指对两个矩阵对应位置的元素进行相减。例如,对于两个3 × 3 3×3 3×3的矩阵A A AB B B,它们的差矩阵C C C的第i i i行第j j j列的元素可以通过以下公式计算:

C [ i ] [ j ] = A [ i ] [ j ] − B [ i ] [ j ] C[i][j] = A[i][j] - B[i][j] C[i][j]=A[i][j]B[i][j]

矩阵乘法

矩阵乘法是指将一个矩阵的行与另一个矩阵的列进行乘法运算,并将结果相加。例如,对于一个m × n m × n m×n的矩阵A和一个n × p n × p n×p的矩阵B B B,它们的乘积矩阵C C C的第i i i行第j j j列的元素可以通过以下公式计算:

C [ i ] [ j ] = A [ i ] [ 1 ] ∗ B [ 1 ] [ j ] + A [ i ] [ 2 ] ∗ B [ 2 ] [ j ] + . . . + A [ i ] [ n ] ∗ B [ n ] [ j ] C[i][j] = A[i][1] * B[1][j] + A[i][2] * B[2][j] + ... + A[i][n] * B[n][j] C[i][j]=A[i][1]B[1][j]+A[i][2]B[2][j]+...+A[i][n]B[n][j]

矩阵转置

矩阵转置是指将矩阵的行和列互换。例如,对于一个m x n的矩阵A,它的转置矩阵B的第i行第j列的元素等于A的第j行第i列的元素:

B [ i ] [ j ] = A [ j ] [ i ] B[i][j] = A[j][i] B[i][j]=A[j][i]

这里是一道模板题:矩阵快速幂

题目链接
代码如下:

#include<bits/stdc++.h>using namespace std;#define endl '\n'#define int long long#define For(i, a, b) for(int i = a;i <= b;i++)typedef pair<int, int> PII;const int N = 110;const int P = 1e9 + 7;int a[N][N], temp[N][N], n, k, res[N][N];void mul(int a[][N], int b[][N]){     For (i, 1, n){         For (j, 1, n){             temp[i][j] = 0;            For (k, 1, n){                 temp[i][j] = (temp[i][j] + a[i][k] * b[k][j] % P) % P;            }        }    }}void power(int b){     For (i, 1, n){         res[i][i] = 1;    }    for (; b; b >>= 1){         if (b & 1){             mul(res, a);            memcpy(res, temp, sizeof res);        }        mul(a, a);        memcpy(a, temp, sizeof a);    }}signed main(){     ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);    cin >> n >> k;    For(i, 1, n)    {         For(j, 1, n)        {             cin >> a[i][j];        }    }    power(k);    For(i, 1, n)    {         For(j, 1, n)        {             cout << res[i][j] % P << ' ';        }        cout << endl;    }    return 0;}

AC图片:
在这里插入图片描述

总结

C++中的矩阵是一个重要的数学概念,在各种领域都有广泛的应用。我们可以使用数组或者向量来表示矩阵,并进行各种运算,如加法、减法、乘法和转置等。熟练掌握矩阵的表示和运算,对于理解和解决实际问题非常有帮助。

结语

今天的文章就到这里啦,三连必回qwq!

本文地址:http://cdn.baiduyun.im/video/www.bfzx365.com/video/945d52698528.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

热门标签

全站热门

康佳15D2C:超薄节能迷你冰箱,9档温控,一天只有一度电,静音绿色生活的新选择

X平台被认定为违法 马斯克硬刚!我们拒绝了欧盟的“非法秘密交易”

前端三大主流框架:React、Vue、Angular

推荐十款免费跑酷单机游戏

SANC G7 Pro Max 27英寸显示器京东1199元

2024如何开始学习人工智能?从零基础到精通,收藏这篇就够了!

性能堪比F1赛车!红牛首款超跑RB17亮相:全球只卖了50辆

推荐十款免费跑酷单机游戏

友情链接