【郑轻】[1127]矩阵乘积_ios
【郑轻】[1127]矩阵乘积_ios_02

矩阵乘法
结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。
理解矩阵乘法 - 阮一峰的网络日志
如果用数组硬算也可以
但是这里写的高级一点
用结构体重载运算符
进而可以直接进行结构体乘法运算
然后直接输出就行

#include<iostream> 
struct node { 
    int n,m; 
    int map[12][12]; 
    node operator *(const node &A) { 
        node tmp; 
        tmp.n=n; 
        tmp.m=A.m; 
        for(int i=0; i<n; i++) { 
            for(int j=0; j<A.m; j++) { 
                int sum=0; 
                for(int k=0; k<A.n; k++) 
                    sum+=map[i][k]*A.map[k][j]; 
                tmp.map[i][j]=sum; 
            } 
        } 
        return tmp; 
    } 
} a,b; 
int main() { 
    int m,p,n; 
    while(scanf("%d %d %d",&m,&p,&n)!=EOF) { 
        a.n=m; 
        a.m=b.n=p; 
        b.m=n; 
        for(int i=0; i<m; i++) 
            for(int j=0; j<p; j++) { 
                scanf("%d",&a.map[i][j]); 
            } 
        for(int i=0; i<p; i++) 
            for(int j=0; j<n; j++) 
                scanf("%d",&b.map[i][j]); 
        node t=a*b; 
        for(int i=0; i<m; i++) { 
            for(int j=0; j<n; j++) { 
                printf("%d",t.map[i][j]); 
                if(j==n-1) 
                    printf("\n"); 
                else
                    printf(" "); 
            } 
        } 
    } 
    return 0; 
} 

题目地址:【郑轻】[1127]矩阵乘积