c++:矩阵乘法,动态二维数组

**

蓝桥杯练习题—矩阵乘法

第一行输入m,s,n,转行后输入两个矩阵
要求结果输出矩阵的乘积
输入两个矩阵,分别是ms,sn大小。输出两个矩阵相乘的结果。
样例输入
2 3 2
1 0 -1
1 1 -3
0 3
1 2
3 1
样例输出
-3 2
-8 2
解题思路:构建三个动态数组,两个为输入的矩阵,第三个用于存储前两个矩阵的乘积并输出。
**

#include<iostream>
using namespace std;
int main()
{	
	int m, s, n;//输入;i按个矩阵的行列,其中a矩阵为m*s,b矩阵为s*n
	cin >> m >> s >> n;
	//构建动态二维数组a
	int** a = new int* [m];
	for (int i = 0; i < m; i++)
	{
		*(a + i) = new int[s];
		for (int j = 0; j < s; j++)
			cin >>a[i][j];//输入二维数组a的每个元素
	}
	//构建二维动态数组b
	int **b = new int *[n];
	for (int i = 0; i < s; i++)
	{
		*(b + i) = new int[n];
		for (int j = 0; j < n; j++)
			cin >> b[i][j];//输入二维数组b的每个元素
	}
	//构建动态二维数组c,c的每个元素c[i][j]即为a矩阵i行与b矩阵j列的乘积
	int **c = new int *[m];
	for (int i = 0; i < m; i++)
	{
		*(c + i) = new int[n];//初始化c的元素等于0
		for (int j = 0; j < n; j++)
		{
			c[i][j] = 0;//i->m,j->n
			int x = i, y = j;
			for (int k = 0; k < s; k++)
				c[i][j] += a[x][k] * b[k][y];//累加a数组x行元素与b数组y列的乘积得到数组c的元素
		}
	}
	for (int i = 0; i < m; i++)
	{for (int j = 0; j < n; j++)
			cout << c[i][j] << " ";
	cout << endl;//每行结束后转行
		}
	//撤销存储空间
	delete[] * a;
	delete[]a;
	delete[] * b;
	delete[]b;
	delete[] * c;
	delete[]c;
	system("pause");//页面静止
	return 0;
}
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值