• L1-8 矩阵A乘以B(15 分)


    给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有R​a​​行、C​a​​列,B有R​b​​行、C​b​​列,则只有C​a​​与R​b​​相等时,两个矩阵才能相乘。

    • 输入格式:
      输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。
    • 输出格式:
      若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵AB,否则输出Error: Ca != Rb,其中Ca是A的列数,Rb是B的行数。
      输入样例1:
      2 3
      1 2 3
      4 5 6
      3 4
      7 8 9 0
      -1 -2 -3 -4
      5 6 7 8
      输出样例1:
      2 4
      20 22 24 16
      53 58 63 28
      输入样例2:
      3 2
      38 26
      43 -5
      0 17
      3 2
      -11 57
      99 68
      81 72
      输出样例2:
      Error: 2 != 3
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int i,j,k,x,y,n,m,a[124][124],b[124][124],c;
    	scanf("%d%d",&x,&y);
    	for(i=0;i<x;i++)
    	{
    		for(j=0;j<y;j++)
    		{
    			scanf("%d",&a[i][j]);
    		}
    	}
    	scanf("%d%d",&m,&n);
    	for(i=0;i<m;i++)
    	{
    		for(j=0;j<n;j++)
    		{
    			scanf("%d",&b[i][j]);
    		}
    	}
    	if(y!=m)
    	{
    		printf("Error: %d != %d",y,m);
    	}
    	else
    	{
    		printf("%d %d
    ",x,n);
    		for(i=0;i<x;i++)
    		{
    			if(i)
    			printf("
    ");
    			for(j=0;j<n;j++)
    			{
    				c=0;
    				for(k=0;k<y;k++)
    				{
    					c+=a[i][k]*b[k][j];
    				}
    				if(j)
    				printf(" ");
    				printf("%d",c);
    			}
    		}
    	}
    }
    
  • 相关阅读:
    NYOJ之Fibonacci数
    NYOJ之奇偶数分离
    NYOJ之喷水装置(一)
    借助LinkedHashMap实现基于LRU算法缓存
    素数距离问题
    NYOJ之ASCII码排序
    《Thinking in Java》十七章_容器深入研究_练习14(Page486)
    《Thinking in Java》十七章_容器深入研究_练习12(Page484)
    《Thinking in Java》十七章_容器深入研究_练习13(Page484)
    遍历目录
  • 原文地址:https://www.cnblogs.com/ai1045152332/p/8577992.html
Copyright © 2020-2023  润新知