go版本解法

This commit is contained in:
1ltwo
2025-01-07 22:30:25 +08:00
parent 15c34a2ade
commit ba5e1b443f

View File

@ -526,3 +526,89 @@ int main()
}
```
### Go
前缀和
```go
package main
import (
"fmt"
"os"
"bufio"
"strings"
"strconv"
"math"
)
func main() {
var n, m int
reader := bufio.NewReader(os.Stdin)
line, _ := reader.ReadString('\n')
line = strings.TrimSpace(line)
params := strings.Split(line, " ")
n, _ = strconv.Atoi(params[0])
m, _ = strconv.Atoi(params[1])//n和m读取完成
land := make([][]int, n)//土地矩阵初始化
for i := 0; i < n; i++ {
line, _ := reader.ReadString('\n')
line = strings.TrimSpace(line)
values := strings.Split(line, " ")
land[i] = make([]int, m)
for j := 0; j < m; j++ {
value, _ := strconv.Atoi(values[j])
land[i][j] = value
}
}//所有读取完成
//初始化前缀和矩阵
preMatrix := make([][]int, n+1)
for i := 0; i <= n; i++ {
preMatrix[i] = make([]int, m+1)
}
for a := 1; a < n+1; a++ {
for b := 1; b < m+1; b++ {
preMatrix[a][b] = land[a-1][b-1] + preMatrix[a-1][b] + preMatrix[a][b-1] - preMatrix[a-1][b-1]
}
}
totalSum := preMatrix[n][m]
minDiff := math.MaxInt32//初始化极大数,用于比较
//按行分割
for i := 1; i < n; i++ {
topSum := preMatrix[i][m]
bottomSum := totalSum - topSum
diff := int(math.Abs(float64(topSum - bottomSum)))
if diff < minDiff {
minDiff = diff
}
}
//按列分割
for j := 1; j < m; j++ {
topSum := preMatrix[n][j]
bottomSum := totalSum - topSum
diff := int(math.Abs(float64(topSum - bottomSum)))
if diff < minDiff {
minDiff = diff
}
}
fmt.Println(minDiff)
}
```