把<x, y>转化为"x y"装进一个slice里,使用双个map分别来记录以前slice连续的字符串的数目和当前slice中的字符串,随后对两个map进行处理。
package main
import "fmt"
var res int
func main() {
var n int
var m int
var num int
var a string
var b string
var ls1 []string
var str string
res = 0
fmt.Scanln(&n)
for i := 0; i < n; i++ {
fmt.Scanln(&m)
m1 := make(map[string]int)
m2 := make(map[string]int)
for j := 0; j < m; j++ {
fmt.Scan(&num)
for k := 0; k < num; k++ {
fmt.Scan(&a, &b)
str = a+" "+b
ls1 = append(ls1, str)
m2[str] ++
str = ""
}
m1, m2 = handle(m1, m2)
ls1 = nil
}
ans := max(m1)
if ans > res {
res= ans
}
if res < 2 {
fmt.Println(1)
} else {
fmt.Println(res)
}
res = 0
}
}
func handle(m1 map[string]int, m2 map[string]int) (map[string]int, map[string]int) {
f:
for k1 := range m1 {
for k2 := range m2 {
if k1 == k2 {
delete(m2, k2)
m1[k1]++
continue f
}
}
if m1[k1] > res {
res = m1[k1]
}
delete(m1, k1)
}
for k := range m2 {
delete(m2, k)
m1[k]++
}
return m1, m2
}
func max(m map[string]int) int {
var ans int
for k := range m {
if m[k] > ans {
ans = m[k]
}
}
return ans
}