1710819070


私信TA

用户名:1710819070

访问量:16113

签 名:

好好学习

等  级
排  名 335
经  验 5381
参赛次数 6
文章发表 21
年  龄 0
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

1+1+1+1+1+1=田

解题思路:

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 人评分

  评论区

  • «
  • »