解题思路:
1.由于超时问题,把scanf替换成bufio
2.定义2个数组,下标0,1,2分别表示用’B’,‘C’,'J’赢的次数,这样输出的时候就不用考虑默认B的情况了
3.定义win,lose,same变量,win和lose相个反就是对方的赢输次数
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var n int
var j,y byte
var inputReader *bufio.Reader
gameJWin := [3]int{0,0,0}
gameYWin := [3]int{0,0,0}
gameCom := [3]byte{'B', 'C', 'J'}
win,lose,same := 0,0,0
fmt.Scanf("%d", &n)
inputReader = bufio.NewReader(os.Stdin)
for i:=0; i<n; i++ {
str,_ := inputReader.ReadBytes('\n')
j = str[0]
y = str[2]
if j == 'C' && y == 'J' {
win++
gameJWin[1]++
} else if j == 'C' && y == 'B' {
lose++
gameYWin[0]++
} else if j == 'J' && y == 'C' {
lose++
gameYWin[1]++
} else if j == 'J' && y == 'B' {
win++
gameJWin[2]++
} else if j == 'B' && y == 'C' {
win++
gameJWin[0]++
} else if j == 'B' && y == 'J' {
lose++
gameYWin[2]++
} else {
same++
}
}
fmt.Printf("%d %d %d\n", win, same, lose)
fmt.Printf("%d %d %d\n", lose, same, win)
jmax := 0
ymax := 0
for i:=0; i<3; i++ {
if gameJWin[i] > gameJWin[jmax] {
jmax = i
}
if gameYWin[i] > gameYWin[ymax] {
ymax = i
}
}
fmt.Printf("%c %c\n", gameCom[jmax], gameCom[ymax])
}