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

1、题目:
在这里插入图片描述
在这里插入图片描述
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();
	    }
	}
}

在这里插入图片描述

发布了75 篇原创文章 · 获赞 52 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/WU2629409421perfect/article/details/88759712