Lintcode553 Bomb Enemy 题解

【题目描述】

Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return the maximum enemies you can kill using one bomb.

The bomb kills all the enemies in the same row and column from the planted point until it hits the wall since the wall is too strong to be destroyed.

Notice: You can only put the bomb at an empty cell.

Example

Given a grid:

0 E 0 0

E 0 W E

0 E 0 0

return 3. (Placing a bomb at (1,1) kills 3 enemies)

给一个二维矩阵, 每一个格子都可能是一堵墙 W,一个敌人 E 或者空 0 (数字 '0'), 返回你可以用一个炸弹杀死的最大敌人数。炸弹会杀死所有在同一行和同一列没有墙阻隔的敌人,因为墙比较坚固难以摧毁。

注意:你只能在空的地方放置炸弹。

样例

给一个矩阵:

0 E 0 0

E 0 W E

0 E 0 0

返回 3。(在(1, 1)处放炸弹可以杀死 3 个敌人)

【题目链接】

www.lintcode.com/en/problem/bomb-enemy/

【题目解析】

1. 遍历数组中每一个点,若为0则开始计算

2. 若当前点为第一列或者左边一个点为wall,表明进入了一个新的区间,需要重新计算。从该点开始一直向右直到遇到边界或者wall,在该过程中,每遇到一个E就将row值+1

3. 若当前点为第一行或者上边一个点为wall,表明进入了一个新的区间,需要重新计算。从该点开始一直向下直到遇到边界或者wall,在该过程中,每遇到一个E就将col值+1

4. 重复2-3步骤

【参考答案】

www.jiuzhang.com/solutions/bomb-enemy/

你可能感兴趣的:(Lintcode553 Bomb Enemy 题解)