4月7日睡觉前的两通乱搞 矩阵乘法
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 1000
int a[maxn][maxn],b[maxn][maxn],t[maxn][maxn];
int n;
void clear()
{
memset(a,0,sizeof(int));
memset(b,0,sizeof(int));
memset(t,0,sizeof(int));
}
void init()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&b[i][j]);
}
int main()
{
clear();
init();
//标准的写法
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
t[i][j]+=a[i][k]+b[k][j];
//好像叫什么行/列的优化还是什么的,据说这样写更快,不知道是什么原理的黑科技,今天还画了一下图来着
for(int i=1;i<=n;i++)
for(int k=1;k<=n;k++)
for(int j=1;j<=n;j++)
t[i][j]+=a[i][k]+b[k][j];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%d ",t[i][j]);
printf("\n");
}
return 0;
}
评论