zoukankan      html  css  js  c++  java
  • nyoj 623 A*B Problem II(矩阵)

    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时结束。
    输出
    计算两个矩阵的乘积并输出。
    样例输入
    2 1 3
    1
    2
    1 2 3
    2 2 3
    1 2
    3 4
    1 0 1
    0 1 0
    0 0 0
    样例输出
    1 2 3
    2 4 6
    1 2 1
    3 4 3
    
    
    来源


    行列式乘法,三重for循环搞定
    这道题整了将近办个小时,
    数组可以开的再小一点。
    #include<stdio.h>
    int a[1005][1005],b[1005][1005],c[1005][1005];
    int main()
    {
       // freopen("250.txt","r",stdin);
        int n,m,k,l,sum;
        int i,j;
        while(scanf("%d%d%d",&n,&k,&m)==3)
        {
            if(m+n+k==0)
            break;
            for(i=0;i<n;i++)
            for(j=0;j<k;j++)
            scanf("%d",&a[i][j]);
            for(i=0;i<k;i++)
            for(j=0;j<m;j++)
            scanf("%d",&b[i][j]);
    
            for(i=0;i<n;i++)
            for(j=0;j<m;j++)
            {
                sum=0;
                for(l=0;l<k;l++)
                {
                    sum+=(a[i][l]*b[l][j]);
                }
                c[i][j]=sum;
            }
            for(i=0;i<n;i++)
            {
                for(j=0;j<m;j++)
                printf("%d ",c[i][j]);
                printf("
    ");
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    windows p12(pfx)个人证书安装过程
    OpenSSL库验证PKCS7签名
    Crypto库实现PKCS7签名与签名验证
    windows 系统中打开一个数字证书所经历的过程
    DBA不可不知的操作系统内核参数
    MySQL大表优化方案
    深入浅出Cache
    Git Stash用法
    Git服务器搭建全过程分步详解
    laravel 5.1 性能优化对比
  • 原文地址:https://www.cnblogs.com/asd1234/p/3392544.html
Copyright © 2011-2022 走看看