BFS深度优先搜索 炸弹人
题面:一个人在一个坐标放炸弹,请问可以可以杀死的敌人数目最大是,并且输出该点的坐标
G代表敌人
.代表该位置可以走
“#”代表该位置存在障碍物 并且防止炸弹的蔓13 13 3 3
.#############
.#GG.GGG#GGG.#
.###.#G#G#G#G#
.#…….#..G#
.#G#.###.#G#G#
.#GG.GGG.#.GG#
.#G#.#G#.#.#.#
.##G…G…..#
.#G#.#G###.#G#
.#…G#GGG.GG#
.#G#.#G#G#.#G#
.#GG.GGG#G.GG#
.#############
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
char map[25][25];
int mark[25][25];
int startx,starty,n,m;
int next[4][2]= {0,1,1,0,0,-1,-1,0};
int Max=0;
struct node {
int gox;
int goy;
int step;
};
node cmp;
int getnum(int x,int y) {
int tx,ty,sum=0;
tx=x;
ty=y;
while(map[tx][ty]!='#') {
if(map[tx][ty]=='G') sum++;
tx--;
}
tx=x;
ty=y;
while(map[tx][ty]!='#') {
if(map[tx][ty]=='G') sum++;
tx++;
}
tx=x;
ty=y;
while(map[tx][ty]!='#') {
if(map[tx][ty]=='G') sum++;
ty--;
}
tx=x;
ty=y;
while(map[tx][ty]!='#') {
if(map[tx][ty]=='G') sum++;
ty++;
}
return sum;
}
void dfs(int curx,int cury) {
mark[curx][cury]=1;
int ans=getnum(curx,cury);
if(ans>Max) {
cmp.gox=curx;
cmp.goy=cury;
Max=ans;
}
int tx,ty;
for(int i=0;i<4;i++) {
tx=curx+next[i][0];
ty=cury+next[i][1];
if(curx<0||curx>n-1||cury<0||cury>m-1)
continue;
if(mark[tx][ty]==0&&map[tx][ty]=='.') {
dfs(tx,ty);
mark[tx][ty]=0;//恢复状态
}
}
}
int main() {
// freopen("input6.txt","r",stdin);
scanf("%d%d%d%d",&n,&m,&startx,&starty);
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
cin>>map[i][j];
}
}
dfs(startx,starty);
printf("%d %d %d",cmp.gox,cmp.goy,Max);
return 0;
}
BFS深度优先搜索 炸弹人的更多相关文章
- BFS广度优先搜索 炸弹人
题面:一个人在一个坐标放炸弹,请问可以可以杀死的敌人数目最大是,并且输出该点的坐标 G代表敌人 .代表该位置可以走 "#"代表该位置存在障碍物 并且防止炸弹的蔓13 13 3 3 ...
- DFS或BFS(深度优先搜索或广度优先搜索遍历无向图)-04-无向图-岛屿数量
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...
- HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))
Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)
深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...
- 广度优先(bfs)和深度优先搜索(dfs)的应用实例
广度优先搜索应用举例:计算网络跳数 图结构在解决许多网络相关的问题时直到了重要的作用. 比如,用来确定在互联网中从一个结点到另一个结点(一个网络到其他网络的网关)的最佳路径.一种建模方法是采用无向图, ...
- 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现
1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...
- 利用广度优先搜索(BFS)与深度优先搜索(DFS)实现岛屿个数的问题(java)
需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS ...
- 深度优先搜索(DFS)和广度优先搜索(BFS)
深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...
随机推荐
- NiXi.DAY06东软实训.:面向对象思想~抽象~static~final~构造方法及其重载
本章技能目标: 使用类图描述设计 掌握面向对象设计的基本步骤 掌握类和对象的概念 掌握构造方法及其重载 掌握封装的概念及其使用 本章单词: class:类 object:对象 static: fina ...
- hibernate创建构架
创建hibernate架构: 注意:需要将所需的架包导进去: 二:Java工程的具体结构: 具体代码如下:hibernate.cfg.xml <!DOCTYPE hibernate-config ...
- 将一个xml文件解析到一个list中
public List<News> getListFromXml(InputStream in) { XmlPullParser parser = Xml.newPullParser(); ...
- python笔记4-if..elif-else条件语句
python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样,否则就怎么怎么这样,格式如下: #if是布尔类型判断,1个是真1个是假 ...
- win10下安装scala流程及问题
第一步:Java 设置 检测方法前文已说明,这里不再描述. 如果还为安装,可以参考我们的Java 开发环境配置. 接下来,我们可以从 Scala 官网地址 http://www.scala-lang. ...
- uiautomator2 获取APP Toast内容
前言:appium必须是1.6以上的版本 环境(安装和安装都可以运行成功,我也不确定要不要这个): 1.抓到toast需要安装uiautomator2,安装npm:npm install -g cnp ...
- 20165326 java第一周学习笔记
第一周学习笔记 一.理论视频学习 1.Java的特点:简单.面向对象.平台无关 2.Java的开发步骤&简单的应用程序: 文本编辑器写入代码 命名类名.java,文件类型所有文件,编码ANSI ...
- 七、在U-boot中让LCD显示图片
1. 增加Nandflash读取代码 因为要显示图片,而图片明显是放在Nandflash中比较合适,因此需要有能够操作Nandflash的函数.在U-boot中已经有能操作Nandflash的函数了, ...
- scrapy--分布式爬虫
14.3 使用scrapy-redis进行分布式爬取了解了scrapy-redis的原理后,我们学习使用scrapy + scrapyredis进行分布式爬取.14.3.1 搭建环境首先搭建scrap ...
- webstorm 自动编译ts
1.在目录根目录添加tsconfig.json { "compileOnSave": false, "compilerOptions": { // 文件目录 & ...