HELLOWORLD


私信TA

用户名:HELLOWORD2016

访问量:3196

签 名:

等  级
排  名 2980
经  验 2001
参赛次数 1
文章发表 5
年  龄 0
在职情况 学生
学  校 河南农业大学
专  业

  自我简介:

解题思路:

明白矩阵乘法的公式
构造二维数组,可能有其他的数据结构,如果有其他更好的结构欢迎大家给我留言

比较难理解的地方有两点

 c[i][j]+=a[i][k]*b[k][j];            ???为什么用三个数组

for(int i=0;i<m;i++)

for(int j=0;j<m;j++)

{

a[i][j]=c[i][j];

c[i][j]=0;  //    ???????为什么要用a来替换

}


三个数组是因为矩阵里的每数最少被用两次

替换再将c[i][j]清零自己理解,

注意事项:

参考代码:

//自己写的 

#include<iostream>

#include<cstring>

using namespace std;

int main()

{

int m,n;

cin>>m>>n;

int a[m][m],c[m][m],b[m][m];  //a起暂存作用 

    for(int i=0;i<m;i++)

for(int j=0;j<m;j++){

cin>>a[i][j];

b[i][j]=a[i][j];

}

memset(c,0,sizeof(c));

if(n==0) {

memset(a,0,sizeof(c));

for(int i=0;i<m;i++)

a[i][i]=1;

}

else if(n>1){  

while(--n){ //相当重要 

for(int j=0;j<m;j++)

for(int k=0;k<m;k++){

for(int z=0;z<m;z++)

c[j][k]+=a[j][z]*b[z][k];

}

for(int i=0;i<m;i++)

for(int j=0;j<m;j++)

{

a[i][j]=c[i][j];

c[i][j]=0;  //相当的重要 

}

}

}

for(int i=0;i<m;i++){

for(int j=0;j<m;j++)

if(j!=(m-1)) cout<<a[i][j]<<" ";

else cout<<a[i][j];

cout<<endl;

}

}


因为菜,所以更应该坚持!谢谢

 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区