用c++代码实现矩阵完成幂运算
时间: 2024-05-01 18:21:06 浏览: 186
以下是用 C++ 代码实现矩阵完成幂运算的示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
typedef vector<vector<int>> Matrix;
// 矩阵乘法
Matrix multiply(Matrix A, Matrix B) {
int n = A.size(), m = B[0].size();
Matrix C(n, vector<int>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
for (int k = 0; k < A[0].size(); k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
// 矩阵幂运算
Matrix matrixPow(Matrix A, int n) {
Matrix ans(A.size(), vector<int>(A.size()));
// 初始化 ans 为单位矩阵
for (int i = 0; i < A.size(); i++) {
ans[i][i] = 1;
}
while (n > 0) {
if (n & 1) ans = multiply(ans, A);
A = multiply(A, A);
n >>= 1;
}
return ans;
}
int main() {
Matrix A = {{1, 2}, {3, 4}};
Matrix ans = matrixPow(A, 3);
for (auto row : ans) {
for (auto x : row) {
cout << x << " ";
}
cout << endl;
}
return 0;
}
```
输出结果为:
```
37 54
81 118
```
该示例中,我们先定义了一个 `Matrix` 类型,用于表示矩阵。然后,我们实现了一个 `multiply` 函数,用于计算矩阵乘法。最后,我们实现了一个 `matrixPow` 函数,用于计算矩阵幂运算。在 `main` 函数中,我们构造了一个矩阵 `A`,并计算了 `A` 的 3 次幂,输出了结果。
阅读全文