北邮oj--矩阵幂
程序员文章站
2022-04-01 17:21:24
...
http://10.105.242.80/problem/p/96/
二刷此题依然小心翼翼,赋值,存储,相乘。。。简单题要注重细节和速度
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,k;
scanf("%d%d",&n,&k);
int a[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
int temp[n][n];
int result[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
result[i][j]=0;
if(i==j){
temp[i][j]=1;
}else{
temp[i][j]=0;
}
}
}
while(k--){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
result[i][j]=0;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int m=0;m<n;m++){
// cout<<temp[i][m]<<"::"<<a[m][j]<<endl;
result[i][j]+=temp[i][m]*a[m][j];
// cout<<result[i][j]<<endl;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
temp[i][j]=result[i][j];
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%d",result[i][j]);
if(j!=n-1) putchar(' ');
}
printf("\n");
}
}
return 0;
}
上一篇: 星球大战尤达(Baby Yoda)
推荐阅读