• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Golang算法之田忌赛马问题实现方法分析

    本文实例讲述了Golang算法之田忌赛马问题实现方法。分享给大家供大家参考,具体如下:

    【田忌赛马问题】

    输入:

    输入有多组测试数据。 每组测试数据包括3行:
    第一行输入N(1≤N≤1000),表示马的数量。
    第二行有N个整型数字,即渊子的N匹马的速度(数字大表示速度快)。
    第三行有N个整型数字,即对手的N匹马的速度。
    当N为0时退出。

    输出:

    若通过聪明的你精心安排,如果能赢得比赛(赢的次数大于比赛总次数的一半),那么输出“YES”。 否则输出“NO”。

    样例输入

    5
    2 3 3 4 5
    1 2 3 4 5
    4
    2 2 1 2
    2 2 3 1
    0

    样例输出

    YES
    NO

    代码实现(Golang):

    复制代码 代码如下:
    package huawei
    //Date:2015-8-14 15:43:11
    import (
        "fmt"
        "io/ioutil"
        "sort"
        "strings"
    )
    //思路:用自己最强的(半数+1)个马和对手最弱的(半数+1)个马比赛
    func Test11Base() {
        data, err := ioutil.ReadFile("DataFiles/huawei_test11.txt")
        checkError(err, "Reading file")
        strs := strings.Split(string(data), "\n")
        index := 0
        for {
            count := strs[index]
            if count == "0" {
                break
            }
            teamA := convertToIntSlice(strings.Fields(strs[index+1]))
            teamB := convertToIntSlice(strings.Fields(strs[index+2]))
            if canWin(teamA, teamB) {
                fmt.Println("YES")
            } else {
                fmt.Println("NO")
            }
            index += 3
        }
    }
    //判断teamA是否能够胜利
    func canWin(teamA []int, teamB []int) bool {
        sort.Ints(teamA)
        sort.Ints(teamB)
        length := len(teamA)
        tryCount := length/2 + 1
        for i := 0; i tryCount; i++ {
            //A组最强的一半
            speedA := teamA[length-(tryCount-i)]
            //B组最弱的一半
            speedB := teamB[i]
            if speedA = speedB {
                return false
            }
        }
        return true
    }

    希望本文所述对大家Go语言程序设计有所帮助。

    您可能感兴趣的文章:
    • Golang排列组合算法问题之全排列实现方法
    • Golang算法问题之整数拆分实现方法分析
    • Golang算法问题之数组按指定规则排序的方法分析
    • Golang最大递减数算法问题分析
    • Golang正整数指定规则排序算法问题分析
    • Go语言实现的树形结构数据比较算法实例
    • Go语言算法之寻找数组第二大元素的方法
    • go语言睡眠排序算法实例分析
    • GO语言利用K近邻算法实现小说鉴黄
    • golang实现分页算法实例代码
    上一篇:golang struct扩展函数参数命名警告解决方法
    下一篇:Golang算法问题之数组按指定规则排序的方法分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Golang算法之田忌赛马问题实现方法分析 Golang,算法,之田,忌,赛马,