English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本文实例讲述了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("JA") } else { fmt.Println("NEIN") } index += 3 } } //Überprüfen, ob teamA gewinnen kann 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++ { //Die stärkste Hälfte der Gruppe A speedA := teamA[length-(tryCount-i)] //Die schwächste Hälfte der Gruppe B speedB := teamB[i] if speedA <= speedB { return false } } return true }
Es wird gehofft, dass die in diesem Artikel beschriebenen Inhalte bei der Programmierung in der Go-Sprache von Vorteil sein werden.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet entnommen und gehört dem ursprünglichen Autor. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige urheberrechtliche Inhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @, wenn Sie eine E-Mail senden, und geben Sie relevante Beweise an. Sobald die Inhalte überprüft wurden, wird diese Website die verdächtigen urheberrechtlichen Inhalte sofort löschen.)