题目看截图
算法如下
package main
import (
"fmt"
"sort"
)
func jz(arr [][]int) int{
sum:=0;
l := len(arr)
for i:=0;i<l;{
// 这里利用sort.Ints对数组进行由小到大排序
sort.Ints(arr[i])
if i==0 {
sum+=arr[i][0]
}
if i+1<l && i+2<l {
//判断从当前指针位置,向后数1 和数2两个位置数字的大小,选择较小的
sort.Ints(arr[i+1])
sort.Ints(arr[i+2])
if arr[i+1][0]<arr[i+2][0] {
sum+=arr[i+1][0]
i+=2
}else{
sum+=arr[i+2][0]
i+=3
}
}else if i+1<l{
//临界值处理,此时的i+2已经越界 不能选择直接使用最后一个值就可以了
sort.Ints(arr[i+1])
sum+=arr[i+1][0]
i++
break
}else{
//临界值处理
sort.Ints(arr[i])
sum+=arr[i][0]
i++
}
}
return sum
}
func main() {
//矩阵声明5x5
arr:=[][]int{
{3,0,-2,4,0},
{-1,2,-2,1,4},
{3,1,-2,-3,3},
{2,-4,-3,-3,2,},
{5,2,-2,-3,1},
}
fmt.Println(arr)
a:=jz(arr)
fmt.Println("总数",a)
}
有疑问加站长微信联系(非本文作者)