矩阵乘法
#include<iostream> #include<string.h> using namespace std; const int N = 100; int main() { int m, n; int i, j, k; int A[N][N] = { 0 }; int r[N][N] = { 0 }; int t[N][N] = { 0 }; scanf("%d%d", &n, &m); for (i = 0;i < n;i++) for (j = 0;j < n;j++) scanf("%d", &A[i][j]); //单位矩阵*原矩阵=原矩阵 for (i = 0;i < n;i++) r[i][i] = 1; while (m--) { memset(t, 0, sizeof(t)); for (i = 0;i < n;i++) for (j = 0;j < n;j++) for (k = 0;k < n;k++) t[i][j] += r[i][k] * A[k][j]; for (i = 0;i < n;i++) for (j = 0;j < n;j++) r[i][j] = t[i][j]; } for (i = 0;i < n;i++) { for (j = 0;j < n;j++) printf("%d ", r[i][j]); printf("\n"); } return 0; }
其实挺简单的,就按照矩阵乘法的思路,一行的某一列做另一个矩阵的行,这样对应着乘。m--是在执行完操作后才减,and先乘一个单位矩阵是一次幂。
btw:https://www.cnblogs.com/ljy-endl/p/11411665.html
后面的fib还没看,先屯着
浙公网安备 33010602011771号