欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

蓝桥杯【JAVA】—— 矩阵乘法

程序员文章站 2022-07-03 19:47:51
...

1、题目:
蓝桥杯【JAVA】—— 矩阵乘法
蓝桥杯【JAVA】—— 矩阵乘法
2、程序代码如下:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner get=new Scanner(System.in);
		int m=get.nextInt();//A(m,s)
		int s=get.nextInt();//B(s,n)
		int n=get.nextInt();
		int ms[][]=new int[m][s];
		int sn[][]=new int[s][n];
		int mn[][]=new int[m][n];
		for(int i=0;i<m;i++) {
			for(int j=0;j<s;j++) {
				ms[i][j]=get.nextInt();
			}
		}
		for(int i=0;i<s;i++) {
			for(int j=0;j<n;j++) {
				sn[i][j]=get.nextInt();
			}
		}
		get.close();
//		for(int i=0;i<s;i++) {//mn数组为2行2列的一个参考
//			mn[0][0]+=ms[0][i]*sn[i][0];
//			mn[0][1]+=ms[0][i]*sn[i][1];
//			mn[1][0]+=ms[1][i]*sn[i][0];
//			mn[1][1]+=ms[1][i]*sn[i][1];
//		}
		
		int i=0;
		while(i<m) {
			for(int j=0;j<n;j++) {
				for(int k=0;k<s;k++) {
					mn[i][j]+=ms[i][k]*sn[k][j];
				}
				System.out.print(mn[i][j]);
				if(j!=n-1)
	    			System.out.print(" ");
			}
			System.out.println();
			i++;
		}
	}
}

上述写法虽然能够运行,在eclipse能够成功通过,但是在蓝桥杯官网上会出现运行超时的问题,所以下面提供一个可以通过运行达到满分的示例——

import java.util.Scanner;
public class Main
{
	public static void main(String[] args)
	{
		Scanner input=new Scanner(System.in);
		int m=input.nextInt();
		int s=input.nextInt();
		int n=input.nextInt();
		int[][] a=new int[m+1][s+1];
		int[][] b=new int[s+1][n+1];
		int[][] c=new int[m+1][n+1];
		int i,j,k;
		for(i=1;i<=m;i++)
			for(j=1;j<=s;j++)
				a[i][j]=input.nextInt();
		for(i=1;i<=s;i++)
			for(j=1;j<=n;j++)
				b[i][j]=input.nextInt();
		for(k=1;k<=s;k++)
			for(i=1;i<=m;i++)
				for(j=1;j<=n;j++)
					c[i][j]+=a[i][k]*b[k][j];
	    for(i=1;i<=m;i++)
	    {
	    	for(j=1;j<=n;j++)
	    	{
	    		System.out.print(c[i][j]);
	    		if(j!=n)
	    			System.out.print(" ");
	    	}
	    	System.out.println();
	    }
	}
}

蓝桥杯【JAVA】—— 矩阵乘法