兩個矩陣的乘積的java實現

題目:

計算兩個矩陣 A、B 的乘積矩陣 C。     

矩陣 A={1,2,3,4,5,6};矩陣 B={7,8,9,10,11,12}。
兩個矩陣的乘積仍然是矩陣。若 A 矩陣有m行p列,B 矩陣有p行n列,則它們的乘積 C 矩陣有m 行n 列。                 

 C=A*B 的算法:  Cij=  (i=0,1,……,m-1;j=0,1,……,n-1)
設 A、B、C 矩陣用 3 個 2 維數組表示:a 數組有 3 行 2 列,b 數組有 2 行 3 列,則 c 數組有 3 行 3 列。
如:
c[0][0]=  a[0][0]*b[0][0]+a[0][1]*b[1][0];
c[1][0]=  a[1][0]*b[0][1]+a[1][1]*b[1][1];

 

 

public class ArrayMult {

	public static void main(String[] args) {
		int[][] a = {{1,2},{3,4},{5,6}};
		int[][] b = {{1,2,3},{4,5,6}};
		//m表示數組a的行數,n表示數組b的列數,s表示數組a的列數和數組b的行數
		int m = a.length, n = b[0].length, s1 = a[0].length, s2 = b.length;
		//判斷兩個數組是否能夠相乘求積
		if(s1 != s2) {
			System.out.println("數組不能相乘,數組a的列數不等於數組b的行數");
			return;
		}
		//動態創建數組c用來保存結果
		int[][] c = new int[m][n];
		for(int i=0; i<m; i++)   //i表示數組c的每一行
			for(int j=0; j<n; j++) {  //j表示數組c的每一列
				int temp = 0;
				for(int k=0; k<s1; k++) //k表示數組a的列號和數組b的行號
					temp+=a[i][k]*b[k][j];
				c[i][j] = temp;
			}
		print(a);
		print(b);
		print(c);
	}
	
	private static void print(int[][] c) {
		int m = c.length;
		int n = c[0].length;
		for(int i=0; i<m; i++) {
			for(int j=0; j<n; j++) {
				if(c[i][j]<10)
					System.out.print(" ");
				System.out.print(c[i][j] + " ");
			}
		System.out.println();
		}
		System.out.println("--------------------------------------");
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章