• A*B Problem II


    题目623                   A*B Problem II

    时间限制:1000 ms  |  内存限制:65535 KB

    难度:1

    描述 ACM的C++同学有好多作业要做,最头痛莫过于线性代数了,因为每次做到矩阵相乘的时候,大量的乘法都会把他搞乱, 所以他想请你写个程序帮他检验一下计算结果是否正确。 输入有多组测试数据,每行给出一组m,n,k(0<m,n,k<=50)。m,n,k表示两个矩阵的大小,其中:  矩阵A:m行n列。  矩阵B:n行k列。  接下来给出m*n个数表示矩阵A和n*k个数表示矩阵B,对于每个数s,0<=s<=1000。  当m,n,k同时为0时结束。输出计算两个矩阵的乘积并输出。

    样例输入

    #include<stdio.h>
      int main(){
              int m,n,k;
        while(scanf("%d %d %d",&m,&n,&k),m,n,k){
        int i,j,p;
           int A[51][51],B[51][51],C[51][51];
                   int s;
            for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                   scanf("%d",&A[i][j]);
             for(i=0;i<n;i++)
                for(j=0;j<k;j++) 
                   scanf("%d",&B[i][j]);
    
                for(i=0;i<m;i++){
                    for(p=0;p<k;p++){
                            s=0;
                        for(j=0;j<n;j++){
                           s=s+A[i][j]*B[j][p];
                        }
                           C[i][p]=s;
                    }
                }
                for(i=0;i<m;i++){
                    for(p=0;p<k;p++){ 
                        printf("%d ",C[i][p]);
                    }
                  printf("
    ");
                }
        }
        return 0;
    }//的类型,但第一个运行较快,
    /* 
    #include<stdio.h>
      int main(){
          int m,n,k;
      
        while(scanf("%d %d %d",&m,&n,&k),m,n,k){
            int i,j,p;
            int A[51][51],B[51][51],C[51][51];
              int temp;
            for(i=0;i<m;i++)
              for(j=0;j<n;j++)
                scanf("%d",&A[i][j]);
            for(i=0;i<n;i++)
              for(j=0;j<k;j++)
                scanf("%d",&B[i][j]);
             for(i=0;i<m;i++){
              for(j=0;j<k;j++){
                temp=0;
                for(p=0;p<n;p++)
                {
                    temp=temp+A[i][p]*B[p][j];
                }
                C[i][j]=temp;
            }
            }
            for(i=0;i<m;i++){
            
              for(j=0;j<k;j++){
              
            printf("%d ",C[i][j]);
                             }
           printf("
    ");
        }  
      }  
       return 0;
       }   

    2 1 3

    1

    2

    1 2 3

    2 2 3

    1 2 3

    4 1 0

    1 0 1

    0 0 0

    样例输出

    1 2 3

    2 4 6

    1 2 1

    3 4 3

  • 相关阅读:
    SQL server 笔记8
    SQL server 笔记7
    SQL server 笔记6
    SQL server的一些函数即笔记5
    SQL server 练习查询45题(18-45)及笔记4
    SQL server 练习查询45题(1-17)及笔记 3
    SQL server 学习笔记2
    SQL server 学习笔记
    C#复习笔记
    学习递归笔记
  • 原文地址:https://www.cnblogs.com/acmgym/p/3671009.html
Copyright © 2020-2023  润新知