1537 - 计算两个矩阵的乘积

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

计算两个矩阵的乘积,第一个是2*3矩阵,第二个是3*2矩阵,结果为一个2*2矩阵。

题目输入

输入包含多组数据,先输入一个2*3矩阵,再输入一个3*2矩阵。

题目输出

输出两个矩阵的乘积。

输入/输出样例

输入格式

1 1 1
1 1 1
1 1
1 1
1 1

输出格式

3 3
3 3

C语言解答

#include <stdio.h>
int main()
{
	int a[2][3],b[3][2];
	int ans[2][2];
	while(~scanf("%d%d%d",&a[0][0],&a[0][1],&a[0][2]))
	{
		scanf("%d%d%d",&a[1][0],&a[1][1],&a[1][2]);
		scanf("%d%d",&b[0][0],&b[0][1]);
		scanf("%d%d",&b[1][0],&b[1][1]);
		scanf("%d%d",&b[2][0],&b[2][1]);

		ans[0][0] = a[0][0]*b[0][0] + a[0][1]*b[1][0] + a[0][2] * b[2][0];
		ans[0][1] = a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2] * b[2][1];
		ans[1][0] = a[1][0]*b[0][0] + a[1][1]*b[1][0] + a[1][2] * b[2][0];
		ans[1][1] = a[1][0]*b[0][1] + a[1][1]*b[1][1] + a[1][2] * b[2][1];

		printf("%d %d\n",ans[0][0],ans[0][1]);
		printf("%d %d\n",ans[1][0],ans[1][1]);
	}
	return 0;
}

C++解答

#include<stdio.h>
#include<string.h>

int main()
{
	int a[2][3],b[3][2],c[2][2],i,j,k;
	while(scanf("%d",&a[0][0])!=EOF)
	{
		for(i=0;i<2;i++)
			for(j=0;j<3;j++)
				if(i||j)
					scanf("%d",&a[i][j]);
		for(i=0;i<3;i++)
			for(j=0;j<2;j++)
				scanf("%d",&b[i][j]);
		memset(c,0,sizeof(c));
		for(i=0;i<2;i++)
			for(j=0;j<2;j++)
				for(k=0;k<3;k++)
					c[i][j]+=a[i][k]*b[k][j];
		for(i=0;i<2;i++)
			for(j=0;j<2;j++)
				printf(j==1?"%d\n":"%d ",c[i][j]);
	}
	return 0;
}

Java解答

import java.util.Scanner;
public class Main
{
	public static void main(String[] argStrings)
	{ 
		Scanner inputScanner=new Scanner(System.in);
		  int[][] Matrix=new int[2][3]; 
		  int[][] Matrix2=new int[3][2];   
		       int i,j,k;  
				int row = 2,col = 3; 
				while(inputScanner.hasNextInt())
				{          int Matrix3[][] = new int[2][2];           
				for(i = 0;i < row;i++)
				{   
					for(j = 0;j < col;j++){  
		                Matrix[i][j]=inputScanner.nextInt();      
		        }         
			
				}            
				for(i = 0;i < col;i++)
				{       
					for(j = 0;j < row;j++)
					{ 
						Matrix2[i][j]=inputScanner.nextInt(); 
					}       
				}          
				for(i = 0;i < row;i++)
				{     
					for(j = 0;j < row;j++)
					{      
						for(k = 0;k < col;k++)
						{                
							Matrix3[i][j] += Matrix[i][k] * Matrix2[k][j];    
						}            
					}        
				}                  
				for(i = 0;i < row;i++)
				{      int count=0;
					for(j = 0;j < row;j++,count++)
					{   if(count==0)
						System.out.printf("%d ",Matrix3[i][j]);
					else
						System.out.printf("%d",Matrix3[i][j]);
					}
					System.out.printf("\n");	
				}                 
			}       
		  }

}