zoukankan      html  css  js  c++  java
  • 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.
    Note that you can only put the bomb at an empty cell. 

    Example:

    For the given grid
    
    0 E 0 0
    E 0 W E
    0 E 0 0
    
    return 3. (Placing a bomb at (1,1) kills 3 enemies)

    class Solution {
    public:
    int maxKilledEnemies(vector<vector<char>>& grid) {
    if (grid.empty() || grid[0].empty()) return 0;
    int m = grid.size(), n = grid[0].size(), res = 0;
    vector<vector<int>> v1(m, vector<int>(n, 0)), v2 = v1, v3 = v1, v4 = v1;
    for (int i = 0; i < m; ++i) {
    for (int j = 0; j < n; ++j) {
    int t = (j == 0 || grid[i][j] == 'W') ? 0 : v1[i][j - 1];
    v1[i][j] = grid[i][j] == 'E' ? t + 1 : t;
    }
    for (int j = n - 1; j >= 0; --j) {
    int t = (j == n - 1 || grid[i][j] == 'W') ? 0 : v2[i][j + 1];
    v2[i][j] = grid[i][j] == 'E' ? t + 1 : t;
    }
    }
    for (int j = 0; j < n; ++j) {
    for (int i = 0; i < m; ++i) {
    int t = (i == 0 || grid[i][j] == 'W') ? 0 : v3[i - 1][j];
    v3[i][j] = grid[i][j] == 'E' ? t + 1 : t;
    }
    for (int i = m - 1; i >= 0; --i) {
    int t = (i == m - 1 || grid[i][j] == 'W') ? 0 : v4[i + 1][j];
    v4[i][j] = grid[i][j] == 'E' ? t + 1 : t;
    }
    }
    for (int i = 0; i < m; ++i) {
    for (int j = 0; j < n; ++j) {
    if (grid[i][j] == '0') {
    res = max(res, v1[i][j] + v2[i][j] + v3[i][j] + v4[i][j]);
    }
    }
    }
    return res;
    }
    };

    转载于:https://www.cnblogs.com/jxr041100/p/8317312.html

  • 相关阅读:
    安卓第四周作业
    安卓作业。
    JSP第七周作业
    jsp第六周作业
    JSP第四周作业
    JSP第二次
    软件测试课堂练习
    JSP第一次
    Android页面
    Android作业
  • 原文地址:https://www.cnblogs.com/twodog/p/12137657.html
Copyright © 2011-2022 走看看