竹子听

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;

}


评论