【Go语言入门100题】048 矩阵A乘以B (15 分) Go语言|Golang

简介: L1-048 矩阵A乘以B (15 分) Go语言|Golang给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra行、Ca列,B有Rb行、Cb列,则只有Ca与Rb相等时,两个矩阵才能相乘。

L1-048 矩阵A乘以B (15 分) Go语言|Golang

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


输入格式:

输入先后给出两个矩阵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


结尾无空行


思路:

矩阵的运算,如果不懂矩阵的运算要自己补一下这方向的知识了。

注意运算是有规律的,所以可以按照规律来进行技术就好了。

还有一点是注意输出的格式。

代码如下:

package main
import "fmt"
func main() {
  var rowa, linea int
  _, _ = fmt.Scan(&rowa, &linea)
  var a [100][100]int
  for i := 0; i < rowa; i++ {
    for j := 0; j < linea; j++ {
      _, _ = fmt.Scan(&a[i][j])
    }
  }
  var rowb, lineb int
  _, _ = fmt.Scan(&rowb, &lineb)
  var b [100][100] int
  for i := 0; i < rowb; i++ {
    for j := 0; j < lineb; j++ {
      _, _ = fmt.Scan(&b[i][j])
    }
  }
  if linea != rowb {  // 如果不满足这个条件,就输出这个
    fmt.Printf("Error: %d != %d", linea, rowb)
    return
  }
  fmt.Printf("%d %d\n",rowa,lineb)  // 先输出行和列
  var c [100][100]int
  for i := 0; i < rowa; i++ {  //进行计算
    for j := 0; j < lineb; j++ {
      sum:=0
      for k := 0; k < linea; k++ {
        sum += a[i][k] * b[k][j]  // 找到规律就行了
      }
      c[i][j] = sum  // 写入到新的列表当中
    }
  }
  for i := 0; i < rowa; i++ {
    for j := 0; j < lineb; j++ {
      if j == lineb-1 {
        fmt.Printf("%d", c[i][j])  // 注意输出格式
      }else{
        fmt.Printf("%d ", c[i][j])
      }
    }
    if i != rowa-1 {
      fmt.Println()
    }
  }
}
相关文章
|
10天前
|
程序员 Go PHP
为什么大部分的 PHP 程序员转不了 Go 语言?
【9月更文挑战第8天】大部分 PHP 程序员难以转向 Go 语言,主要因为:一、编程习惯与思维方式差异,如语法风格和编程范式;二、学习成本高,需掌握新知识体系且面临项目压力;三、职业发展考量,现有技能价值及市场需求不确定性。学习新语言虽有挑战,但对拓宽职业道路至关重要。
40 10
|
8天前
|
Go API 开发者
深入探讨:使用Go语言构建高性能RESTful API服务
在本文中,我们将探索Go语言在构建高效、可靠的RESTful API服务中的独特优势。通过实际案例分析,我们将展示Go如何通过其并发模型、简洁的语法和内置的http包,成为现代后端服务开发的有力工具。
|
10天前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
34 10
|
10天前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
8天前
|
存储 监控 数据可视化
Go 语言打造公司监控电脑的思路
在现代企业管理中,监控公司电脑系统对保障信息安全和提升工作效率至关重要。Go 语言凭借其高效性和简洁性,成为构建监控系统的理想选择。本文介绍了使用 Go 语言监控系统资源(如 CPU、内存)和网络活动的方法,并探讨了整合监控数据、设置告警机制及构建可视化界面的策略,以满足企业需求。
25 1
|
12天前
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析
|
1天前
|
Shell Go API
Go语言grequests库并发请求的实战案例
Go语言grequests库并发请求的实战案例
【Go语言入门100题】026 I Love GPLT (5 分) Go语言 | Golang
L1-026 I Love GPLT (5 分) Go语言|Golang 这道超级简单的题目没有任何输入。 你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了。 所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。
578 0
|
存储 Go
【Go语言入门100题】023 输出GPLT (20 分) Go语言 | Golang
L1-023 输出GPLT (20 分) Go语言|Golang 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。 下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。
159 0
|
14天前
|
安全 大数据 Go
深入探索Go语言并发编程:Goroutines与Channels的实战应用
在当今高性能、高并发的应用需求下,Go语言以其独特的并发模型——Goroutines和Channels,成为了众多开发者眼中的璀璨明星。本文不仅阐述了Goroutines作为轻量级线程的优势,还深入剖析了Channels作为Goroutines间通信的桥梁,如何优雅地解决并发编程中的复杂问题。通过实战案例,我们将展示如何利用这些特性构建高效、可扩展的并发系统,同时探讨并发编程中常见的陷阱与最佳实践,为读者打开Go语言并发编程的广阔视野。