//
// Created by Administrator on 2021/7/25.
// #ifndef C__TEST01_BOMBENEMY_HPP
#define C__TEST01_BOMBENEMY_HPP #include <iostream>
#include <vector>
using namespace std; class BombEnemy {
/*
* 有一个M*N的网络,每个格子可能是空的,可能有一个敌人,可能有
* 一堵墙
* 只能在某个空格子里放一个炸弹,炸弹会炸死所有同行同列的敌人,
* 但是不能穿透墙
* 最多能炸死几个敌人
*
* 敌人: 0 E 0 0
* 输入: 如图 E 0 W E
* 输出: 3 0 E 0 0
* */
public:
BombEnemy(vector<vector<char>> An);
int BombEnemyDP(vector<vector<char>> A);
private:
vector<vector<char>> A;
}; BombEnemy::BombEnemy(vector<vector<char>> An):
A(An){
A.resize(A.size());
for (int i = 0; i < An.size(); ++i) {
A[i].resize(An[i].size());
}
} int BombEnemy::BombEnemyDP(vector<vector<char>> A) {
if(A.size() == 0 || A[0].size() == 0){
return 0;
} vector<vector<int>> f;
vector<vector<int>> res;
f.resize(A.size());
for (int i = 0; i < A.size(); ++i) {
f[i].resize(A[i].size());
} res.resize(A.size());
for (int i = 0; i < A.size(); ++i) {
res[i].resize(A[i].size());
for (int j = 0; j < res.size(); ++j) {
res[i][j] = 0;
}
} //up
for(int i = 0; i < A.size(); ++i){
for(int j = 0; j < A[i].size(); ++j){
if(A[i][j] == 'W'){
f[i][j] = 0;
}else{
f[i][j] = 0;
if(A[i][j] == 'E'){
f[i][j] = 1;
}
if(i>0){
f[i][j] += f[i-1][j];
}
}
res[i][j] += f[i][j];
}
} //down
for(int i = A.size()-1; i >= 0; --i){
for(int j = 0; j < A[i].size(); ++j){
if(A[i][j] == 'W'){
f[i][j] = 0;
}else{
f[i][j] = 0;
if(A[i][j] == 'E'){
f[i][j] = 1;
}
if(i<A.size()-1){
f[i][j] += f[i+1][j];
}
}
res[i][j] += f[i][j];
}
} //left
for(int i = 0; i < A.size(); ++i){
for(int j = 0; j < A[i].size(); ++j){
if(A[i][j] == 'W'){
f[i][j] = 0;
}else{
f[i][j] = 0;
if(A[i][j] == 'E'){
f[i][j] = 1;
}
if(j>0){
f[i][j] += f[i][j-1];
}
}
res[i][j] += f[i][j];
}
} //right
for(int i = 0; i < A.size(); ++i){
for(int j = A[i].size()-1; j >=0; --j){
if(A[i][j] == 'W'){
f[i][j] = 0;
}else{
f[i][j] = 0;
if(A[i][j] == 'E'){
f[i][j] = 1;
}
if(j<A[i].size()-1){
f[i][j] += f[i][j+1];
}
}
res[i][j] += f[i][j];
}
} int result = 0;
for (int i = 0; i < res.size(); ++i) {
for (int j = 0; j < res[i].size(); ++j) {
if(A[i][j] == 0){
if(res[i][j]>result) result = res[i][j];
}
}
}
return result;
}
#endif //C__TEST01_BOMBENEMY_HPP

BombEnemy(炸弹人)的更多相关文章

  1. [LeetCode] Boom Enemy 炸弹人

    Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return ...

  2. [LeetCode] Bomb Enemy 炸弹人

    Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return ...

  3. (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小 ...

  4. (NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近一直在做另一个RPG游戏,所以本系列迟迟没有更新,上一篇博 ...

  5. (NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 用plist列表文件来表示游戏数据 因为在这个炸弹人游戏中有很多 ...

  6. (NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们现在来依次看一下上篇中提到的各个方法,首先介绍的是updat ...

  7. (NO.00005)iOS实现炸弹人游戏(三):从主场景类谈起

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我又粗粗看了下整个项目的代码,比较多: 不少类都与其他类有着千丝 ...

  8. (NO.00005)iOS实现炸弹人游戏(二):素材选择的取舍

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 前面一篇里我们基本明确了游戏的大致玩法和特点.下面就游戏中会用到 ...

  9. (NO.00005)iOS实现炸弹人游戏(一):游戏的整体规划设计

    在这新的系列中,我们来尝试完成一款经典的游戏:炸弹人 这是以前红白机上的炸弹人,由于游戏可玩性强,玩法又简单,在后面的机型上陆续推出了很多款续作. 在随后的触屏设备上也出现了炸弹人的模拟版,用的是模拟 ...

随机推荐

  1. 调试器地址出现大小端紊乱,引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。

    今天在编写一系列新增需求代码后,开始调试代码 发现上个版本正常可运行的代码出现了:引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突. 上个版本数代码 ...

  2. iOS Swift结构体与类的方法调度

    前言 hello,小伙伴们:在忙碌中闲暇之余给大家聊聊swift的知识点,今天给大家带来的是swift中结构体与类的方法调度详细区别,希望对你有所帮助,好了废话不用多说,接下来步入主题! 1.普通方法 ...

  3. FastAPI 学习之路(五)

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四)  我们之前的文章分享了 ...

  4. Pytorch 的安装

    GPU版本的安装 Windows平台 CPU 版本安装 conda install pytorch torchvision cpuonly -c puython Windows平台需安装VC,需要的联 ...

  5. 攻防世界XCTF-WEB入门全通关

    为了更好的体验,请见我的---->个人博客 XCTF的web块入门区非常简单,适合一些刚接触安全或者对网络安全常识比较了解的同学在安全搞累之余娱乐娱乐. 其主要考察下面几点: 基本的PHP.Py ...

  6. 初学Python-day11 函数4

    函数 1.递归函数 自己不断调用自己的过程 2.递归求和 1 def sum(arg): 2 if arg == 1: 3 return 1 4 return arg + sum(arg - 1) 5 ...

  7. SpringCloud 2020.0.4 系列之服务降级

    1. 概述 老话说的好:做人要正直,做事要正派,胸怀坦荡.光明磊落,才会赢得他人的信赖与尊敬. 言归正传,之前聊了服务间通信的组件 Feign,今天我们来聊聊服务降级. 服务降级简单的理解就是给一个备 ...

  8. stm32学习心得体会

    stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm ...

  9. linux shell 函数返回值问题(超过255)

    最近再写一个shell测试的时候出现问题,函数返回值异常 用shell计算斐波那契数列数列,写了一个shell函数,然后调用的,验证的时候我只随便计算了几个数(10以内),确认结果是正确的就提交了,后 ...

  10. 2021CCPC华为云挑战赛 部分题题解

    CDN流量调度问题 题看了没多久就看出来是\(DP\)的题,然后就设了状态\(f[i][j]\)表示到前\(i\)个点时已经用了\(j\)个节点的最小总代价,结果发现转移时\(O(nm^2)\),但这 ...