题解 | 矩阵幂:利用多次的三重循环求解
矩阵幂
https://www.nowcoder.com/practice/31e539ab08f949a8bece2a7503e9319a
#include <iostream> using namespace std; int main() { int n, k; cin >> n >> k; int num[n][n]; int num_temp[n][n]; int answer[n][n]; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>num[i][j]; num_temp[i][j]=num[i][j]; //num_temp充当原矩阵 } } while(k>1) { k--; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { answer[i][j]=0; for(int k=0;k<n;k++) { answer[i][j]+=num[i][k]*num_temp[k][j]; /* 矩阵乘法,尤其注意i,j,k的位置:如num_temp2[0][1]是第一行乘以第二列,num_temp2[0][2]是第一行乘以第三列;num_temp2矩阵存放num和num_temp矩阵的相乘结果 */ } } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { num[i][j]=answer[i][j]; //相乘后再把值赋回num矩阵 } } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cout<<num[i][j]<<' '; } cout<<endl; } }#考研##牛客创作赏金赛#