藍橋杯【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();
	    }
	}
}

在這裏插入圖片描述

發佈了81 篇原創文章 · 獲贊 56 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章