題目1489:計算兩個矩陣的乘積時間限制:1 秒 內存限制:128 兆 特殊判題:否 提交:134 解決:25 題目描述: 計算兩個矩陣的乘積,第一個是2*3,第二個是3*2 輸入: 輸入為兩個矩陣,其中一個為2*3的矩陣,另一個為3*2的矩陣 輸出: 一個2*2的矩陣(每一個數字後都跟一個空格) 樣例輸入: 1 2 3 3 4 5 6 7 8 9 10 11樣例輸出: 52 58 100 112來源: 2012年哈爾濱工業大學計算機研究生機試真題 [cpp] /********************************* * 日期:2013-3-4 * 作者:SJF0115 * 題號: 九度OJ 題目1489:計算兩個矩陣的乘積 * 來源:http://ac.jobdu.com/problem.php?pid=1489 * 結果:AC * 來源:2012年哈爾濱工業大學計算機研究生機試真題 * 總結: **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> int Matrix[2][3]; int Matrix2[3][2]; int main () { int i,j,k; int row = 2,col = 3; while(scanf("%d %d %d",&Matrix[0][0],&Matrix[0][1],&Matrix[0][2]) != EOF){ int Matrix3[2][2] = {0}; //輸入第一個矩陣 for(i = 1;i < row;i++){ for(j = 0;j < col;j++){ scanf("%d",&Matrix[i][j]); } } //輸入第二個矩陣 for(i = 0;i < col;i++){ for(j = 0;j < row;j++){ scanf("%d",&Matrix2[i][j]); } } //相乘 for(i = 0;i < row;i++){ for(j = 0;j < row;j++){ for(k = 0;k < col;k++){ Matrix3[i][j] += Matrix[i][k] * Matrix2[k][j]; } } } //輸出 for(i = 0;i < row;i++){ for(j = 0;j < row;j++){ printf("%d ",Matrix3[i][j]); } printf("\n"); } } return 0; } /********************************* * 日期:2013-3-4 * 作者:SJF0115 * 題號: 九度OJ 題目1489:計算兩個矩陣的乘積 * 來源:http://ac.jobdu.com/problem.php?pid=1489 * 結果:AC * 來源:2012年哈爾濱工業大學計算機研究生機試真題 * 總結: **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> int Matrix[2][3]; int Matrix2[3][2]; int main () { int i,j,k; int row = 2,col = 3; while(scanf("%d %d %d",&Matrix[0][0],&Matrix[0][1],&Matrix[0][2]) != EOF){ int Matrix3[2][2] = {0}; //輸入第一個矩陣 for(i = 1;i < row;i++){ for(j = 0;j < col;j++){ scanf("%d",&Matrix[i][j]); } } //輸入第二個矩陣 for(i = 0;i < col;i++){ for(j = 0;j < row;j++){ scanf("%d",&Matrix2[i][j]); } } //相乘 for(i = 0;i < row;i++){ for(j = 0;j < row;j++){ for(k = 0;k < col;k++){ Matrix3[i][j] += Matrix[i][k] * Matrix2[k][j]; } } } //輸出 for(i = 0;i < row;i++){ for(j = 0;j < row;j++){ printf("%d ",Matrix3[i][j]); } printf("\n"); } } return 0; } 分享到: