如何判断任意俄罗斯方块能否到达棋盘指定位置?
给定格子的俄罗斯方块可达性判断问题
问题定义
给定俄罗斯方块棋盘上的一个格子,判断是否存在任意一款支持常规旋转的俄罗斯方块能够到达该格子。
示例说明
- 左侧场景:红色L型方块无法抵达黄色目标格子(灰色区域为障碍)
- 右侧场景:红色L型方块可抵达黄色目标格子(方块下落至底部后快速左移即可)
注:只要任意一款方块能到达目标格子,判定结果即为YES。
问题拆解
可将原问题拆解为「验证某款特定方块能否到达目标格子」,对所有俄罗斯方块逐一验证,只要有一款满足条件,整体结果即为YES。
思路探索
- 曾提出多种解决思路,但均能找到对应的反例,无法成立
- 最后一种可行思路:针对方块的每种旋转状态,将旋转后的方块置于目标格子位置,尝试反向移动至初始生成位置。但该回溯方法在面对多款方块及多个目标格子的场景时,性能表现不佳。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

