手机端网站建设教程视频,自己的网站怎么做的,青岛注册公司流程2023年,电商是做什么题目描述#xff1a; 给定一个n*n的矩阵#xff0c;求该矩阵的k次幂#xff0c;即P^k 思路 1. 和求解整数幂的思路相同, 使用分治策略, 代码的框架是 int pow(a, b) { c pow(a, b/2) c* c; if(b 为奇数) c * a; return c } 2. 这道题求的是矩阵, 上面的框架不太好用, 毕竟返…题目描述 给定一个n*n的矩阵求该矩阵的k次幂即P^k 思路 1. 和求解整数幂的思路相同, 使用分治策略, 代码的框架是 int pow(a, b) { c pow(a, b/2) c* c; if(b 为奇数) c * a; return c } 2. 这道题求的是矩阵, 上面的框架不太好用, 毕竟返回一个矩阵是有点不靠谱. 既然显式的返回矩阵不行, 那就玩个把戏, 隐式返回. 将矩阵设置为全局变量, 使得递归函数里对矩阵的操作全局有效, 就不需要显式返回矩阵了 3. 尝试仅使用两个矩阵得出结果, 但失败了, 计算矩阵乘法, 至少需要三个矩阵的空间吧 代码 #include iostream
#include stdio.h
using namespace std;int matrix1[12][12];
int matrix2[12][12];
int matrix3[12][12];int n, k;void multimatrix(int x) {if(x 1)return;multimatrix(x/2);for(int i 0; i n; i ) {for(int j 0; j n; j ) {int grid 0;for(int k 0; k n; k ) {grid matrix2[i][k]*matrix2[k][j];}matrix3[i][j] grid;}}for(int i 0; i n; i ) {for(int j 0; j n; j ) {matrix2[i][j] matrix3[i][j];}}if(x1) {for(int i 0; i n; i ) {for(int j 0; j n; j ) {int grid 0;for(int k 0; k n; k ) {grid matrix2[i][k]*matrix1[k][j];}matrix3[i][j] grid;}}for(int i 0; i n; i ) {for(int j 0; j n; j ) {matrix2[i][j] matrix3[i][j];}}}
}int main() {int t;scanf(%d, t);for(int i 0; i t; i ) {scanf(%d%d, n, k);for(int i 0; i n; i ) {for(int j 0; j n; j ) {scanf(%d, matrix1[i][j]);matrix2[i][j] matrix1[i][j];}}multimatrix(k);for(int i 0; i n; i ) {printf(%d, matrix2[i][0]);for(int j 1; j n; j ) {printf( %d, matrix2[i][j]);}printf(\n);}}return 0;
} 转载于:https://www.cnblogs.com/xinsheng/p/3586815.html