#29. 吃糖
吃糖
题目描述
有一个 行 列的网格。自上而下第 行,自左而右第 列的格子记作 。每个格子可能是起点、终点、空地、墙或者糖果格。 的类型由字符 表示, S
表示起点, G
表示终点, .
表示空地, #
表示墙, o
表示糖果格。保证起点和终点各有且仅有一个,糖果格最多有 18 个。
高桥君现在在起点。他可以多次移动到上下左右相邻且不是墙的格子。高桥君希望用不超过 次移动到达终点。请判断是否可能做到。如果可能,请在最终停在终点的前提下,求出途中最多能访问多少个不同的糖果格。注意,同一个糖果格多次经过只计一次。
输入格式
输入通过标准输入给出,格式如下:
输出格式
如果无法在 步内到达终点,输出 -1
。如果可以,请输出在最终停在终点的前提下,途中最多能访问的不同糖果格数量。
输入输出样例 #1
输入 #1
3 3 5
S.G
o#o
.#.
输出 #1
1
输入输出样例 #2
输入 #2
3 3 1
S.G
.#o
o#.
输出 #2
-1
输入输出样例 #3
输入 #3
5 10 2000000
S.o..ooo..
..o..o.o..
..o..ooo..
..o..o.o..
..o..ooo.G
输出 #3
18
说明/提示
限制条件
- 均为整数
- 只可能是
S
,G
,.
,#
,o
之一 - 满足
S
的 仅有一个 - 满足
G
的 仅有一个 - 满足
o
的 最多有 18 个
样例解释 1
如 $(1,1) \rightarrow (1,2) \rightarrow (1,3) \rightarrow (2,3) \rightarrow (1,3)$,移动 次,可以访问 个糖果格并最终到达终点。无法在 步内访问 个糖果格并最终到达终点,所以答案是 。注意,如果 $(1,1) \rightarrow (2,1) \rightarrow (1,1) \rightarrow (1,2) \rightarrow (1,3) \rightarrow (2,3)$,虽然经过 个糖果格,但最后不在终点,因此不合法。
样例解释 2
无法在 步内到达终点。