361-Bomb-Enemy
0x0 题目详情
想象一下炸弹人游戏,在你面前有一个二维的网格来表示地图,网格中的格子分别被以下三种符号占据: 'W' 表示一堵墙 'E' 表示一个敌人 '0'(数字 0)表示一个空位

请你计算一个炸弹最多能炸多少敌人。 由于炸弹的威力不足以穿透墙体,炸弹只能炸到同一行和同一列没被墙体挡住的敌人。 注意:你只能把炸弹放在一个空的格子里
测试用例:
示例: 输入: [["0","E","0","0"],["E","0","W","E"],["0","E","0","0"]] 输出: 3 解释: 对于如下网格
0 E 0 0 E 0 W E 0 E 0 0
假如在位置 (1,1) 放置炸弹的话,可以炸到 3 个敌人
0x1 解题思路
这道题暴力递归还是很简单的。首先我们需要遍历每一个位置,看看它能不能放炸弹。如果能放炸弹,我们就遍历该位置的上下左右四个方向。因为递归遍历时需要方向信息,所以递归函数需要额外添加一个方向参数。
注意:如果有
[E,0,E,0]这种情况,在最右边放置炸弹是可以炸到最左边的人的
至于动态规划,可以照着上面的递归改改,但是很慢,不知道为什么。
0x2 代码实现
自己实现的暴力递归:
动态规划版本:
然而我看到别人的暴力求解根本不需要递归:
0x3 课后总结
有时候暴力求解不一定需要用到递归奥。
Last updated
Was this helpful?