@@ -526,3 +526,89 @@ int main()
526526}
527527
528528```
529+
530+ ### Go
531+
532+ 前缀和
533+
534+ ``` go
535+ package main
536+
537+ import (
538+ " fmt"
539+ " os"
540+ " bufio"
541+ " strings"
542+ " strconv"
543+ " math"
544+ )
545+
546+ func main () {
547+ var n , m int
548+
549+ reader := bufio.NewReader (os.Stdin )
550+
551+ line , _ := reader.ReadString (' \n ' )
552+ line = strings.TrimSpace (line)
553+ params := strings.Split (line, " " )
554+
555+ n, _ = strconv.Atoi (params[0 ])
556+ m, _ = strconv.Atoi (params[1 ])// n和m读取完成
557+
558+ land := make ([][]int , n)// 土地矩阵初始化
559+
560+ for i := 0 ; i < n; i++ {
561+ line , _ := reader.ReadString (' \n ' )
562+ line = strings.TrimSpace (line)
563+ values := strings.Split (line, " " )
564+ land[i] = make ([]int , m)
565+ for j := 0 ; j < m; j++ {
566+ value , _ := strconv.Atoi (values[j])
567+ land[i][j] = value
568+ }
569+ }// 所有读取完成
570+
571+ // 初始化前缀和矩阵
572+ preMatrix := make ([][]int , n+1 )
573+ for i := 0 ; i <= n; i++ {
574+ preMatrix[i] = make ([]int , m+1 )
575+ }
576+
577+ for a := 1 ; a < n+1 ; a++ {
578+ for b := 1 ; b < m+1 ; b++ {
579+ preMatrix[a][b] = land[a-1 ][b-1 ] + preMatrix[a-1 ][b] + preMatrix[a][b-1 ] - preMatrix[a-1 ][b-1 ]
580+ }
581+ }
582+
583+ totalSum := preMatrix[n][m]
584+
585+ minDiff := math.MaxInt32 // 初始化极大数,用于比较
586+
587+ // 按行分割
588+ for i := 1 ; i < n; i++ {
589+ topSum := preMatrix[i][m]
590+
591+ bottomSum := totalSum - topSum
592+
593+ diff := int (math.Abs (float64 (topSum - bottomSum)))
594+ if diff < minDiff {
595+ minDiff = diff
596+ }
597+ }
598+
599+ // 按列分割
600+ for j := 1 ; j < m; j++ {
601+ topSum := preMatrix[n][j]
602+
603+ bottomSum := totalSum - topSum
604+
605+ diff := int (math.Abs (float64 (topSum - bottomSum)))
606+ if diff < minDiff {
607+ minDiff = diff
608+ }
609+ }
610+
611+ fmt.Println (minDiff)
612+ }
613+ ```
614+
0 commit comments