c++矩阵——超实用的数据结构
文章目录
- 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 A和B 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 A和B 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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。