สมมติว่าเรามีตาราง 2 มิติ ที่นี่แต่ละช่องเป็นกำแพง 'W' ศัตรู 'E' หรือ '0' ว่างเปล่า เราต้องหาศัตรูสูงสุดที่เราสามารถฆ่าได้โดยใช้ระเบิดลูกเดียว ระเบิดฆ่าศัตรูทั้งหมดในแถวและคอลัมน์เดียวกันจากจุดที่ปลูกจนกระทบผนัง และเราสามารถวางระเบิดได้เฉพาะในช่องว่างเท่านั้น
ดังนั้นหากอินพุตเป็นแบบ

จากนั้นผลลัพธ์จะเป็น 3 เมื่อวางระเบิดที่กรีน มันจะฆ่าศัตรูสามคน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ยกเลิก :=0
-
n :=จำนวนแถวของตาราง m :=จำนวนคอลัมน์ของกริด
-
กำหนดอาร์เรย์ colCnt ขนาด m
-
สำหรับการเริ่มต้น i :=0 เมื่อ i
-
สำหรับการเริ่มต้น j :=0 เมื่อ j
-
ถ้า j เป็นศูนย์หรือ grid[i, j] เหมือนกับ 'W' ดังนั้น −
-
rowCnt :=0
-
ถ้า grid[i, j] เหมือนกับ 'W' แล้ว −
-
k :=j + 1
-
-
มิฉะนั้น
-
k :=เจ
-
-
สำหรับ k
-
rowCnt :=rowCnt + 1 เมื่อ (grid[i, k] คือ 'E') มิฉะนั้น 0
-
-
-
ถ้า i เป็นศูนย์ หรือ grid[i, j] เหมือนกับ 'W' ดังนั้น −
-
colCnt[j] :=0
-
ถ้า grid[i, j] เหมือนกับ 'W' แล้ว −
-
k :=ผม + 1
-
-
มิฉะนั้น
-
k :=ผม
-
-
สำหรับ k
-
colCnt[j] :=colCnt[j] + 1 เมื่อ (grid[k, j] คือ 'E') มิฉะนั้น 0
-
-
-
ถ้า grid[i, j] เหมือนกับ '0' แล้ว −
-
ret :=สูงสุดของ ret และ rowCnt + colCnt[j]
-
-
-
-
รีเทิร์น
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int maxKilledEnemies(vector<vector<char>>& grid) {
int ret = 0;
int n = grid.size();
int m = n ? grid[0].size() : 0;
int rowCnt = 0;
vector<int< colCnt(m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (!j || grid[i][j] == 'W') {
rowCnt = 0;
int k;
if (grid[i][j] == 'W')
k = j + 1;
else
k = j;
for (; k < m && grid[i][k] != 'W'; k++) {
rowCnt += (grid[i][k] == 'E');
}
}
if (!i || grid[i][j] == 'W') {
colCnt[j] = 0;
int k;
if (grid[i][j] == 'W')
k = i + 1;
else
k = i;
for (; k < n && grid[k][j] != 'W'; k++) {
colCnt[j] += (grid[k][j] == 'E');
}
}
if (grid[i][j] == '0') {
ret = max(ret, rowCnt + colCnt[j]);
}
}
}
return ret;
}
};
main(){
Solution ob;
vector<vector<char>> v = {{'0','E','0','0'},{'E','0','W','E'},{'0','E','0','0'}};
cout << (ob.maxKilledEnemies(v));
} อินพุต
{{'0','E','0','0'},{'E','0','W','E'},{'0','E','0','0'}} ผลลัพธ์
3