andy6804tw
7/20/2016 - 2:05 AM

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=3532 2個陣列 a*b 以及 x*y 是列乘行 矩陣相乘用三迴圈實作,最外迴圈a控制 第二個y控制 第三個b控制

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=3532

2個陣列 ab 以及 xy 是列乘行 矩陣相乘用三迴圈實作,最外迴圈a控制 第二個y控制 第三個b控制

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		while (scn.hasNext()) {
			int a = scn.nextInt(), b = scn.nextInt(), arr[][] = new int[a][b];//輸入到第一個陣列
			for (int i = 0; i < a; i++) {
				for (int j = 0; j < b; j++)
					arr[i][j] = scn.nextInt();
			}
			int x = scn.nextInt(), y = scn.nextInt(), ary[][] = new int[x][y];//輸入到第二個陣列
			for (int i = 0; i < x; i++) {
				for (int j = 0; j < y; j++)
					ary[i][j] = scn.nextInt();
			}
			int ans[][] = new int[a][y];
			for (int i = 0; i < a; i++) {//控制列(第一個陣列)
				for (int j = 0; j < y; j++) {//控制行(第二個陣列)
					int num = 0;
					for (int k = 0; k < b; k++) {//每個元素(第一個陣列的左到右,第二個陣列上到下)
						num += arr[i][k] * ary[k][j];
					}
					ans[i][j] = num;
				}
			}
			for (int i = 0; i < a; i++) {
				for (int j = 0; j < y; j++) {
					if (j != 0)
						System.out.print(" ");
					System.out.print(ans[i][j]);
				}
				System.out.println();
			}
		}
	}
		/* 
    題目:[C_AR62-中] 矩陣相乘
    作者:1010
    時間:西元 2016 年 7 月 */
}