小马过河,寻找最短路径

SmallForest · · 1111 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

题目看截图

图片描述

算法如下

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)
}

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:SmallForest

查看原文:小马过河,寻找最短路径

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1111 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传