PAT乙 1038 统计同成绩学生(GO)
思路:
- 最简单的思路,百分制的分数,可以定义一个长度为100的数组,分数对应下标,读入一个分数,就在对应数组下标的数组中+1
- 然后读入第二行,需要查询的个数和对应的分数,输出下标对应的值即可
- 最后一个测试用例容易超时,所以建议用字符串读入,字符串读入如果依旧用int数组,那么字符串转整形也需要一段时间,所以用map性能会高于int数组
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
var n int
_, _ = fmt.Scanf("%d", &n)
count := make(map[string]int, n)
var inputReader = bufio.NewReader(os.Stdin)
str, _ := inputReader.ReadString('\n')
str1, _ := inputReader.ReadString('\n')
strArray := strings.Fields(str)
for _,s := range strArray {
count[s]++
}
str1Array := strings.Fields(str1)
first, _ := strconv.Atoi(str1Array[0])
for i:=1; i<first; i++ {
_, ok := count[str1Array[i]]
if ok {
fmt.Printf("%d ", count[str1Array[i]])
} else {
fmt.Printf("0 ")
}
}
_, ok := count[str1Array[first]]
if ok {
fmt.Println(count[str1Array[first]])
} else {
fmt.Println(0)
}
}