2863: 重力鸭
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:0
解决:
题目描述
小D最近在玩一个小游戏。 与一般游戏不同,这个游戏的主角并不能跳跃,只能够左右移动,而作为代替的 是,这个主角可以通过翻转重力的方向,来让自己达到目的地。 小D想知道,它最少需要翻转几次重力才能够成功地到达目的地。
游戏的地图是一个n*m的方阵。
在任何时候,角色可以选择向左移动,向右移动,或者翻转重力的方向。
在进行一次操作之前和之后,如果角色的位置向重力的方向的相邻格子是空的,那
么角色将会向那个方向跌落,直到遇到一个非空的格子或者离开地图。
任何时候,若玩家离开地图的范围,游戏被判定为失败。
请求得使用重力反转操作的最少次数。
重力方向初始向下,一次翻转操作可以将重力的方向由向下变为向上,或者由向
上变为向下。
输入
• 第1行:两个正整数N,M,表示地图的宽和长。
• 第2 ∼ N + 1行:第i + 1行包含M个字符,表示地图。有且仅有下面的四种类型的
字符。
– .字符表示空的格子。
– #字符表示不可通行的障碍物。
– C字符表示起始点。
– D字符表示结束点。
输出
• 第1行,包含一个整数,表示最少需要的翻转次数。如果无论如何都无法到达终
点,请输出-1
样例输入 复制
5 6
######
#...##
#...D#
#C...#
##.###
样例输出 复制
3
提示
数据范围
• 对于40%的数据:N,M ≤ 20。
• 对于100%的数据:N,M ≤ 500。