解题思路:

m=0,单位矩阵输出,正对角线变为1,剩余变为0;

m=1,,原样输出;

m=2,矩阵计算。sum=sum+d[i][h]*s[h][j];(这个靠自己去书上理解.....不好解释),d数组一直不变的,为了相乘,例如:2^4->2*2=4,4*2=8,8*2=16,2没有变化;
注意事项:

参考代码:

#include<iostream>

#include<algorithm>

#include<string.h>

#include<stdlib.h>  

using namespace std;

int main()

{

int a,m,j,i,h,k;

long long s[40][30],d[40][30],c[40][30],sum;

while(cin>>a>>m)

{

for(i=0;i<a;i++)

for(j=0;j<a;j++)

{

cin>>s[i][j];

d[i][j]=s[i][j];

}

if(m==0)

{

for(i=0;i<a;i++)

for(j=0;j<a;j++)

{

if(i==j) s[i][j]=1;

else s[i][j]=0;

}

}

for(int q=1;q<m;q++) //幂是2,就相乘1次,从1开始

{

for(i=0;i<a;i++)

for(j=0;j<a;j++)

{

sum=0;

for(h=0;h<a;h++)

sum=sum+d[i][h]*s[h][j];

c[i][j]=sum;

}

for(i=0;i<a;i++)

for(j=0;j<a;j++)

s[i][j]=c[i][j];

}

for(i=0;i<a;i++)

{

for(j=0;j<a;j++)

cout<<s[i][j]<<" ";

cout<<endl;

}

}

return 0;


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论