这个题大一的时候没做是因为没学过线性代数,不太清楚他在说什么...一个循环的简单题,但是好像曾经想用到过时间复杂度更低的矩阵乘法,但是最终到现在还是没有解决,如果有人找到了可以帮我在下边留言一下,谢谢
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main(void)
{
int a,b;
int m1[105][105];
scanf("%d%d",&a,&b);
for(int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
scanf("%d",&m1[i][j]);
}
}
int aa,bb;
int m2[105][105];
scanf("%d%d",&aa,&bb);
for(int i=0;i<aa;i++)
{
for(int j=0;j<bb;j++)
{
scanf("%d",&m2[i][j]);
}
}
if(b!=aa)
{
printf("Error: %d != %d\n",b,aa);
return 0;
}
else
{
int result[105][105];
memset(result,0,sizeof(result));
for(int i=0;i<a;i++)//循环次数为矩阵1的行数
{
for(int j=0;j<bb;j++)//循环次数为矩阵的2的列数
{
for(int k=0;k<b;k++)//循环次数为矩阵1的列数(也就是矩阵2的行数)
{
result[i][j] += m1[i][k]*m2[k][j];
}
}
}
printf("%d %d\n",a,bb);
int space = 0;
for(int i=0;i<a;i++)
{
space = 0;
for(int j=0;j<bb;j++)
{
if(space!=0)
{
printf(" ");
}
space ++;
printf("%d",result[i][j]);
}
printf("\n");
}
}
}