本来是处理两个矩阵的连乘求如何加括号使得中间的运算次数最少的问题,但是突然想到实现一下如何求连个矩阵连乘的算法,就实现了一下,挺简单的:
注意程序围绕的思想:
1.两个矩阵相乘,前一个矩阵的列等于一个矩阵的行
2.拿前一个矩阵的每一行,依次的乘以后一个矩阵的每一列
[cpp] view plain copy
#include<iostream>
//注意矩阵连乘需要满足的是:
//前一个矩阵的列等于后一个矩阵的行
using namespace std;
int main(){
int a[3][1] = {
{1},
{2},
{3}
};
int b[1][3] = {{1,2,3}};
int c[3][3];
int temp;
for (int i=0; i<3; i++){ //拿出数组a的每一行
for (int z=0; z<3; z++){ //分别和数组b的每一列进行相乘
int sum = 0; //因为每次乘以数组a的每一列都会产生数组c中的一个元素,所以sum要放在这里
for(int j=0; j<1; j++){
sum = a[i][j] * b[j][z];
}
c[i][z] = sum;
}
}
for (int i=0; i<3; i++){
for (int j=0; j<3; j++)
cout << c[i][j];
cout << endl;
}
}