Analysis of the realization method of Golang algorithm for Tianji Horse racing problem
- 2020-06-07 04:37:40
- OfStack
An example of Golang algorithm is presented in this paper. To share for your reference, specific as follows:
Tian Ji Horse Racing Problem
Input:
Enter multiple sets of test data. Each set of test data includes 3 rows:
Enter N(1≤N≤1000) in line 1 to indicate the number of horses.
The second line has N integer Numbers, i.e., the speed of yuanzi's N horse (large Numbers indicate fast speed).
Line 3 has the N integer number, the speed of the opponent's N horse.
Exit when N is 0.
Output:
If you can win the race (by more than half of the total number of RACES), then output "YES". Otherwise output "NO".
The sample input
5
2 3 3 4 5
1 2 3 4 5
4
2 2 1 2
2 2 3 1
0
Sample output
YES
NO
Code implementation (Golang) :
package huawei
//Date : 2015-8-14 15:43:11
import (
"fmt"
"io/ioutil"
"sort"
"strings"
)
// Idea: Use your strongest ( Half of the +1) A horse and the weakest opponent ( Half of the +1) A horse race
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
}
}
// judge teamA Can we win
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 Group of the most powerful 1 And a half
speedA := teamA[length-(tryCount-i)]
//B Set the weakest 1 And a half
speedB := teamB[i]
if speedA <= speedB {
return false
}
}
return true
}
I hope this article has been helpful in Go programming.