题面:一个人在一个坐标放炸弹,请问可以可以杀死的敌人数目最大是,并且输出该点的坐标

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 <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
char map[25][25];
int mark[25][25];
int next[4][2]= {0,1,1,0,0,-1,-1,0};
struct node {
int gox;
int goy;
int step;
};
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 bfs(int n,int m,int startx,int starty) {
int max=0;
queue<node> que;
while(!que.empty()) que.pop();//当多组数据时
node one;
one.gox=startx;
one.goy=starty;
one.step=0;
mark[startx][starty]=1;
que.push(one);
node fir,ans;
while(!que.empty()) {
fir=que.front();
que.pop();
int Sum=getnum(fir.gox,fir.goy);
int tx,ty;
for(int i=0; i<4; i++) {
tx=fir.gox+next[i][0];
ty=fir.goy+next[i][1];
if(tx<0||tx>n-1||ty<0||ty>m-1)
continue;
if(mark[tx][ty]==0&&map[tx][ty]=='.') {
mark[tx][ty]=1;
node cmp;
cmp.gox=tx;
cmp.goy=ty;
cmp.step=fir.step+1;
que.push(cmp);
}
}
if(Sum>max) {
ans.gox=fir.gox;
ans.goy=fir.goy;
ans.step=fir.step+1;
max=Sum;
} }
printf("%d %d %d",ans.gox,ans.goy,max);
} int main() {
freopen("input6.txt","r",stdin);
int startx,starty,n,m;
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];
}
}
bfs(n,m,startx,starty); return 0;
}

BFS广度优先搜索 炸弹人的更多相关文章

  1. BFS广度优先搜索 poj1915

    Knight Moves Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 25909 Accepted: 12244 Descri ...

  2. 0算法基础学算法 搜索篇第二讲 BFS广度优先搜索的思想

    dfs前置知识: 递归链接:0基础算法基础学算法 第六弹 递归 - 球君 - 博客园 (cnblogs.com) dfs深度优先搜索:0基础学算法 搜索篇第一讲 深度优先搜索 - 球君 - 博客园 ( ...

  3. 图的遍历BFS广度优先搜索

    图的遍历BFS广度优先搜索 1. 简介 BFS(Breadth First Search,广度优先搜索,又名宽度优先搜索),与深度优先算法在一个结点"死磕到底"的思维不同,广度优先 ...

  4. 算法竞赛——BFS广度优先搜索

    BFS 广度优先搜索:一层一层的搜索(类似于树的层次遍历) BFS基本框架 基本步骤: 初始状态(起点)加到队列里 while(队列不为空) 队头弹出 扩展队头元素(邻接节点入队) 最后队为空,结束 ...

  5. GraphMatrix::BFS广度优先搜索

    查找某一结点的邻居: virtual int firstNbr(int i) { return nextNbr(i, n); } //首个邻接顶点 virtual int nextNbr(int i, ...

  6. 步步为营(十六)搜索(二)BFS 广度优先搜索

    上一篇讲了DFS,那么与之相应的就是BFS.也就是 宽度优先遍历,又称广度优先搜索算法. 首先,让我们回顾一下什么是"深度": 更学术点的说法,能够看做"单位距离下,离起 ...

  7. 关于宽搜BFS广度优先搜索的那点事

    以前一直知道深搜是一个递归栈,广搜是队列,FIFO先进先出LILO后进后出啥的.DFS是以深度作为第一关键词,即当碰到岔道口时总是先选择其中的一条岔路前进,而不管其他岔路,直到碰到死胡同时才返回岔道口 ...

  8. [MIT6.006] 13. Breadth-First Search (BFS) 广度优先搜索

    一.图 在正式进入广度优先搜索的学习前,先了解下图: 图分为有向图和无向图,由点vertices和边edges构成.图有很多应用,例如:网页爬取,社交网络,网络传播,垃圾回收,模型检查,数学推断检查和 ...

  9. DFS(深度优先搜索)和BFS(广度优先搜索)

    深度优先搜索算法(Depth-First-Search) 深度优先搜索算法(Depth-First-Search),是搜索算法的一种. 它沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 当节点v的 ...

随机推荐

  1. Java线程池理解及用法

    前言 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担.线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory ...

  2. POJ 2456 Agressive cows(二分)

    POJ 2456 Agressive cows 农夫 John 建造了一座很长的畜栏,它包括N (2≤N≤100,000)个隔间,这 些小隔间的位置为x0,...,xN-1 (0≤xi≤1,000,0 ...

  3. laravel处理菜单保持的方法:

    <!-- 左侧菜单区域 --> <div class="col-md-3"> @section('leftmenu') <div class=&quo ...

  4. prototype:构造函数的真相、原型链

    函数不是构造函数,但是当且仅当使用 new 时,函数调用会变成 ‘构造函数调用’.那么对 ’构造函数‘ 最准确的解释是:所有带 new 的函数调用. Nothing 只是一个普通的函数,但使用 new ...

  5. (C/C++学习笔记) 五. 常变量(只读变量)和宏

    五. 常变量(只读变量)和宏 ● 常变量 常变量 #include <iostream.h>                    //预处理文件 int main() { const d ...

  6. java 设计模式参考资料

    参考博客 http://www.cnblogs.com/lin3615/p/3783272.html 设计模式之责任链模式http://www.cnblogs.com/draem0507/p/3784 ...

  7. <Redis Advance><Pipelining><Memory Optimization><Expire><Transactions>

    Overview About Redis pipelining About Redis memory optimization About Redis expire About Redis trans ...

  8. MySQL:MySQL Workbench的使用

    MySQL Workbench 一.布局介绍 附:图片转自https://blog.csdn.net/qq_19891827/article/details/53995079 二.创建数据库 第一步: ...

  9. ios中scrollView基本用法

    设置scrollView内容的尺寸(滚动的范围) self.scrollView.contentSize = CGSizeMake(, ); self.scrollView.contentSize = ...

  10. uniGUI HyperServer

    uniGUI HyperServer 是一种新的服务器体系架构, 旨在高度提高 uniGUI 应用程序的可用性.稳定性和特定的可伸缩性. 这一目标是通过应用业界已知和广泛使用的技术 (如负载平衡和过程 ...