基础练习 矩阵乘法 (蓝桥杯)
注:矩阵乘法运算法则:c[i][j]+=a[i][j++]*b[i++][j];(这里,数组c[i][j]初值赋为0,a,b数组初值相等)
#include <iostream> #include <string.h> int c[35][35];//在主函数外定义的数组是全局变量,自动赋值为零 using namespace std; int main() {int a[35][35],b[35][35]; int n,m,i,j; cin>>n>>m; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>a[i][j]; b[i][j]=a[i][j]; } } if(m==0) { for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i!=j) cout<<"0"<<" "; else cout<<"1"<<" "; } cout<<endl; } } else { while(--m) { for( i=0;i<n;i++) { for( j=0;j<n;j++) { for(int k=0;k<n;k++) c[i][j]+=b[i][k]*a[k][j];//b[i][j]是原理的矩阵,a[i][j]是矩阵两两相乘的后所得的新矩阵 //在接下来的赋值过程中,一定要把c的值重新符零,否则a的值就不是矩阵两两相乘的结果 } } for(i=0;i<n;i++) for(j=0;j<n;j++) { a[i][j]=c[i][j];//每乘一次将乘得的结果赋给a, c[i][j]=0;//c归零,重新保存新的一轮成积 } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cout<<a[i][j]<<" "; } cout<<endl; } } return 0; }