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+1if canWin(teamA, teamB) { ))+2if 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 언어 프로그래밍에 도움이 되길 바랍니다.
성명: 본 글은 인터넷에서 가져왔으며, 원저자에게 권리가 있으며, 인터넷 사용자가 자발적으로 기여하고 업로드한 내용입니다. 본 웹사이트는 소유권을 가지지 않으며, 인공적인 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용이 있다면 notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(메일을 보내는 경우 #을 @으로 변경하십시오. 신고를 하고 관련 증거를 제공하시면, 해당 내용이 사실로 확인되면 즉시 해당 내용을 삭제할 것입니다。)