AcWing 1015. 摘花生-golang
原题链接
简单
作者:
一只鱼
,
2021-05-15 09:30:55
,
所有人可见
,
阅读 289
摘花生-golang
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
var t int
var scan *bufio.Scanner
var r, c int
func main() {
fmt.Scanf("%d", &t)
scan = bufio.NewScanner(os.Stdin)
for t > 0 {
t--
r, c := readLine2()
w := make([][]int, r+1)
for j := 0; j <= r; j++ {
w[j] = make([]int, c+1)
if j == 0 {
continue
}
w[j] = readLine(c)
}
fmt.Println(maxNum(w, r, c))
}
}
func maxNum(w [][]int, r, c int) int {
f := make([][]int, r+1)
for i := 0; i <= r; i++ {
f[i] = make([]int, c+1)
}
for i := 1; i <= r; i++ {
for j := 1; j <= c; j++ {
f[i][j] = max(f[i-1][j], f[i][j-1]) + w[i][j]
}
}
return f[r][c]
}
func max(x, y int) int {
if x > y {
return x
}
return y
}
func readLine2()(int, int){
for {
scan.Scan()
data := strings.Split(scan.Text(), " ")
if len(data) != 2 {
continue
}
r, _ := strconv.Atoi(data[0])
c, _ := strconv.Atoi(data[1])
return r, c
}
}
func readLine(c int) []int {
for {
scan.Scan()
data := strings.Split(scan.Text(), " ")
if len(data) != c {
continue
}
sli := make([]int, c+1)
for k, v := range data {
tmp, _ := strconv.Atoi(v)
sli[k+1] = tmp
}
return sli
}
}