HDU 1312 Red and Black --- 入门搜索 BFS解法
题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象为墙,然后.为可以走的空地,求人可以走的最大点数。
解题思路:从起点开始,起点的四个方向满足条件的点分别入队(放置重复入队,需只要一入队就标记已访问而不是取出时再进行标记),直至队为空。
/*HDU 1312 ----- Red and Black 入门搜索 BFS解法*/
#include <cstdio>
#include <queue>
using namespace std; int n, m; //n行m列
int cnt;
char mapp[][];
int dirx[] = { -, , , };
int diry[] = { , , -, }; //用于循环来访问4个方向
struct Node{
int x, y;
};
queue<Node> q; void bfs(){
/*队不为空时 表明还可以近一步搜索*/
/*在队中的点都是已访问过、但需近一步访问周围四个方向的点的点*/
while (!q.empty()){
Node tmp = q.front();
q.pop();
Node tmp2;
/*近一步判断该点的四个方向四否可以访问*/
for (int i = ; i < ; ++i){
//tmp2即为4个方向的点
tmp2.x = tmp.x + dirx[i];
tmp2.y = tmp.y + diry[i];
if (tmp2.x >= && tmp2.x < n && tmp2.y >= && tmp2.y < m
&& mapp[tmp2.x][tmp2.y] != '#'){
//该点可访问
++cnt;
mapp[tmp2.x][tmp2.y] = '#'; //访问过后标记为不可访问
q.push(tmp2); //入队以下次循环近一步搜索
}
}//for(i)
}//while(empty)
} int main()
{
int startx, starty;
//m行m列 注意题目先给出列数
while (scanf("%d%d", &m, &n) == && (m + n)){
for (int i = ; i < n; ++i){
scanf("%s", mapp[i]);
for (int j = ; j < m; ++j){
if ('@' == mapp[i][j]){
startx = i;
starty = j;
cnt = ; //初始化找到一块
mapp[i][j] = '#'; //访问过后为已访问过
}
}
}//for(i)
Node start;
start.x = startx; start.y = starty;
q.push(start);
bfs();
printf("%d\n", cnt);
} return ;
}
HDU 1312 Red and Black --- 入门搜索 BFS解法的更多相关文章
- HDU 1312 Red and Black --- 入门搜索 DFS解法
HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...
- HDU 1312:Red and Black(DFS搜索)
HDU 1312:Red and Black Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & ...
- HDU 1312 Red and Black(最简单也是最经典的搜索)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Limit: 2000/1000 MS (Java/Oth ...
- HDU 1312 Red and Black(bfs,dfs均可,个人倾向bfs)
题目代号:HDU 1312 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Limit: 2000/100 ...
- HDU 1312 Red and Black (dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Limit: 2000/1000 MS (Java/Oth ...
- hdu 1312:Red and Black(DFS搜索,入门题)
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU 1312 Red and Black DFS(深度优先搜索) 和 BFS(广度优先搜索)
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 1312 Red and Black (DFS & BFS)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:有一间矩形房屋,地上铺了红.黑两种颜色的方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相 ...
- HDU 1312 Red and Black(bfs)
Red and Black Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descr ...
随机推荐
- COJ 1287 求匹配串在模式串中出现的次数
这里要在后缀自动机的节点中维护一个从到达当前位置出现的字符串总个数 这里新添加进来的节点的状态出现的次数必然为1 另外包含所能达到这个节点所能到达的状态一定是将它作为父亲的点 那么说明将它作为父亲的点 ...
- Mac运行exe的几种方法,欢迎补充!
1. 用wine直接运行exe.安装wine后有个放exe的文件夹,双击后会自动包装运行.看起来挺方便的,就怕暂用资源比较大: http://www.youtube.com/watch?v=eYISV ...
- 有关PHP的字符串知识
字符串是由一系列字符组成,在PHP中,字符和字节一样,也就是说,一共有256种不同字符的可能性. 字符串型可以用三种方法定义:单引号形式.双引号形式和Heredoc结构形式. 1.每条指令可要记得使用 ...
- 关于高并发的aotomic
AtomicInteger线程安全的根源,熟悉并发的同学一定知道在java中处理并发主要有两种方式: 1,synchronized关键字,这个大家应当都各种面试和笔试中经常遇到. 2,volatile ...
- 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解
本文主要讲的是<天龙八部>游戏中水面(TerrainLiquid)的具体实现,使用C++,Ogre1.6. 天龙的水面做的比较简单,虽然没有倒影,但动态纹理+深度图做出的效果还行,看着不是 ...
- 支撑向量机(SVM)
转载自http://blog.csdn.net/passball/article/details/7661887,写的很好,虽然那人也是转了别人的做了整理(最原始文章来自http://www.blog ...
- (spring-第1回【IoC基础篇】)Spring容器中Bean的生命周期
日出日落,春去秋来,花随流水,北雁南飞,世间万物皆有生死轮回.从调用XML中的Bean配置信息,到应用到具体实例中,再到销毁,Bean也有属于它的生命周期. 人类大脑对图像的认知能力永远高于文字,因此 ...
- 51nod 最长公共子序列Lcs
有深入 了解了一点 . 51nod 可以用来加深 算法理解程度 ,
- 学军NOIP2016模拟赛1
GTMD这么水的一套题没有AK T1:妥妥的二分答案,贪心check. T2:问题可以转化为最长上升(还是下降我记不住了)子序列. T3:发现点被覆盖上的顺序是一定的.求出这个顺序,第一个操作在线段树 ...
- CRM客户关系管理系统 ——客户联系人添加(十五)
需求描述: 1.业务员自己可以查看属于自己的客户信息 2.客服部经理可以查看查看所有客户信息 3.其他人员不得查看客户信息 效果截图: