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

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. Sql server中 如何用sql语句创建视图

    1.视图的作用 视图的作用: 第一点:使用视图,可以定制用户数据,聚焦特定的数据. 解释: 在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话, 采购人员,可以需要一些与其有关的数据,而与 ...

  2. CRF(Conditional Random Field)

    条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析.命名实体识别.词性标注等.在我看来,CRF就像一个反向的隐马尔可夫模型(HMM),两者都是用了马尔科夫链作为隐含变量的概率转移模型,只 ...

  3. python 自然语言处理(四)____词典资源

    词典或者词典资源是一个词和/或短语及其相关信息的集合,例如:词性和词意定义等相关信息.词典资源附属于文本,而且通常在文本的基础上创建和丰富.下面列举几种nltk中的词典资源. 1. 词汇列表语料库 n ...

  4. Win10系列:JavaScript页面导航

    页面导航是在开发应用的过程中使用频率较高的技术,其中比较常用的导航方式有多页导航和页内导航,采用多页导航方式的应用程序包含一系列的页面,在一个页面中加入另一个页面的链接地址后,单击链接将跳转到指定页面 ...

  5. asp.net mvc 笔记一

    webapi controller 中 action 名称 不能与 View controller  中的 action 名称相同,否则 Url.Action("actionName&quo ...

  6. Object value iterator:值迭代器

    // ES5 // 对于数组,使用标准的 for 循环,其实这种方式并不是在遍历值,而是遍历下标来指向值!ES5中增加了一些数组迭代器:forEach.every.some // forEach:遍历 ...

  7. JAVA⑤

    1.定义一个常量 * * 01.一旦被赋予初始值 不允许被改变 * 02.常量名全大写 * 03.如果有多个单词,每个单词使用_ 分割 2. == : * 01. 数值类型 使用的时候 比较的是 值 ...

  8. day01 初识Python

    今日主要内容 1.初识python 2.简单了解下python的数据类型 nubmer=int(input("请输入数字大小:")) if nubmer>66: print( ...

  9. 使用STL的next_permutation函数

    文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 下午研究了一下全排列算法,然后发现C++的STL有一个函数可以方便地生成全排列,这 ...

  10. myeclipse复制的文件代码乱码

    myeclipse复制的文件代码乱码 其实没有更改设置之前,并不会有此问题. 默认的设置,不要改.