package main import ( "fmt" ) type Node struct{ value, step int } var result [301]int // 存储10到其他数值所需的操作次数 func BFS() { // 计算10到其他数值所需的操作次数 for i:=0;i<=300;i++{ result[i] = -1 } queue := []Node{{10,0}} result[10]=0 var cur Node var dist []int for len(queue) > 0{ cur = queue[0] queue = queue[1:] dist = []int{ cur.value-1,cur.value+1, cur.value+100,cur.value-100, cur.value+10, cur.value-10, 10, 300, } for _, d := range dist { if d < 10 || d >300 || result[d] != -1{ continue } result[d] = cur.step + 1 queue = append(queue, Node{d, cur.step+1}) } } } func main() { var a, b, c, d int var t int fmt.Scanf("%d", &t) BFS() for t >0 { t-- fmt.Scanf("%d %d %d %d", &a, &b, &c, &d) fmt.Println(result[a]+result[b]+result[c]+result[d]) } }