原题
(这题原名叫“代号2”,老师放到OJ上的时候题目名称统一弄成ABCDE了。)
Description
code4101听说这次选拔赛要他出3道题,吓得哭晕在厕所里一整天。第二天他早早的就去图书馆,废寝忘食(早餐午餐都没吃)的出题,晚上终于完成了。
现在他决定犒劳自己,去校内的两个食堂各吃一顿晚餐。
已知学校是个10*10的网格,code4101当前所在位置是A,他每次能从当前格移动到上下左右4格中的任意一格,学校内共有六个食堂,编号1,2,...,6。
code4101是路痴,不知道先去哪个食堂再去哪个食堂,使得总路程最短,所以只好请你来带路。
Input
输入数据的第一行为一个整数T,表示有T(0 < T < 20)组测试数据。
每个测试有10行,每行10个字符。字符’A’是起点,’1’~’6’代表6个食堂所在位置。除了’#’代表不能行走的障碍点,’.’等字符所在格子都是可以行走的通路。
每两个测试间会有一个空行。输入数据保证不会出现文中未提到的字符,且解一定存在。
Output
每个测试数据在一行输出一个数字,代表最小的总移动次数。
<span style="background-color: rgb(255, 255, 153);">Sample Input</span>
2
.......#12
..#....#.#
..##...A#.
.........#
...###....
..#.#..4..
.......#..
.5#.#.....
......3...
...6......
A......#..
..#......#
..##..1...
.........#
...###....
..#2#..4..
.......#..
.5#.#.....
......3...
...6......
<span style="background-color: rgb(255, 255, 153);">Sample Output</span>
7
12
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
概述
一个10*10的网格,一个起点A,六个目的地1~6中任选两个,问最短距离是多少。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
这题其实算法并不难,主要是考验编程熟练度,能否在有限的比赛时间内完成代码,题型为BFS。
坑点:注意虽然解一定存在,不代表每个食堂一定能到达,可能一个食堂上下左右会被封锁,估计这点会造成一些人RE。不过更有可能的是因为时间原因,比较少人会选择做这题。后来我把样例改成现在这样,把这个坑点直接告诉大家了。所以降低了难度,能过样例的基本能AC。
注意标程的一些编程技巧,特别是6个食堂选2个的地方,可以直接用双循环暴力。