当前位置:编程学习 > C/C++ >>

题目1489:计算两个矩阵的乘积

 
题目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;
}
 
 
 
 
分享到: 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,