加载中...

浙江理工大学入队200题——11J

问题 J: 零基础学C/C++125——矩阵乘积

题目描述

输入一个m×n的整数矩阵A,再输入一个n×m的整数矩阵B。计算C=A×B。

输入

输入为多组测试数据。

先输入m和n(m和n均≤10),另起一行后输入一个m×n的整数矩阵A,然后再输入一个n×m的整数矩阵B。每列数据用空格分隔,每行数据用回车分隔。

输出

计算A×B→C,输出矩阵C。

样例输入 >Copy

2 3
1 2 3
2 4 6
1 2
3 4
5 6

样例输出 >Copy

22 28
44 56
提示
C=A×B,C是一个M×M的矩阵。

题解

矩阵乘积,由于m*n与n*m相乘,所以矩阵为m*m形
纯粹的数学知识,唯一一个小坑就是每组的c要清0(多组输入)

代码(AC)

点击查看代码
#include<stdio.h>
const int N = 70;
int a[N][N],b[N][N],c[N][N];
int main()
{
	int m,n;
	while(scanf("%d%d",&m,&n)!=EOF)
	{
		for(int i=0;i<m;i++)
		{
			for(int j=0;j<n;j++)
			{
				scanf("%d",&a[i][j]);
			}
		}
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				scanf("%d",&b[i][j]);
			}
		}
		for(int i=0;i<m;i++)
		{
			for(int j=0;j<m;j++)
			{
				c[i][j]=0;
				for(int k=0;k<n;k++)
				{
					c[i][j]+=a[i][k]*b[k][j];
				}
			}
		}
		for(int i=0;i<m;i++)
		{
			for(int j=0;j<m;j++)
			{
				printf("%d",c[i][j]);
				if(j!=m-1) printf(" ");
				else printf("\n");
			}
		}
	}
	return 0;
}


posted @ 2022-10-29 12:33  shany212  阅读(44)  评论(0编辑  收藏  举报