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相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...
随机推荐
- linux下uptime命令详解
uptime uptime 另外还有一个参数 -V(大写),是用来查询版本的 procps是一个实用程序包,主要包括ps top kill等程序主要用来显示与控制一些系统信息,进程状态之类的内容. 以 ...
- Linux command stty
Linux command stty reference: https://blog.csdn.net/lqxandroid2012/article/details/78929506 [Purpose ...
- QuickStart系列:docker部署之PostgreSQL
mysql --> mariadb --> postgresql 官网简介 https://www.postgresql.org/ 使用的镜像名称 centos/postgresql-96 ...
- 常用6种type的form表单的input标签分析及示例
<input> 标签用于搜集用户信息. 根据不同的 type 属性值,输入字段拥有很多种形式.输入字段可以是文本字段.复选框.掩码后的文本控件.单选按钮.按钮等等. 在这里博主介绍6中ty ...
- 自定义xadmin后台首页
登陆xadmin后台,首页默认是空白,可以自己添加小组件,xadmin一切都是那么美好,但是添加小组件遇到了个大坑,快整了2个礼拜,最终实现想要的界面.初始的页面如图: 本机后台显示这个页面正常,do ...
- pyhton字符串
a = 5 # 1 + 1 = 10 + 1 = 11 + 1 = 100 + 1 = 101print(a.bit_length()) # 计算一个数字的二进制长度. a = 10# print(t ...
- 总结5条对学习Linux系统有帮助的经验心得
作为国产手机中的代表厂商,OPPO一直走在国内的前沿.不仅手机出货量在国内遥遥领先,而且在国外也抢占不少的市场份额.前段时间,OPPO在台湾地区签下田馥甄和林宥嘉担任OPPO R9s的代言人外,在东南 ...
- js 操作dom
childNodes 返回当前元素所有子元素的数组 parentNode 返回元素的父节点 document.createElement(tagName) 文档对象上的createElement方法可 ...
- nginx:负载均衡实战(一)
1.负载均衡说明 2.准备 我自己在电脑布置了两台虚拟机,两台都有nginx和tomcat,两台虚拟机布置的ip分别是37以及54,我在tomcat的首页动了点手脚,方便自己看是来自哪个ip的 接着在 ...
- 每天CSS学习之text-overflow
text-overflow是CSS3的一个属性,其作用是当文本溢出包含它的元素时,应该裁剪还是将多余的字符用省略号来表示. 该属性一般和overflow:hidden属性一起使用. text-over ...