HDU 1312

  题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象为墙,然后.为可以走的空地,求人可以走的最大点数。

  解题思路:从起点开始,起点的四个方向满足条件的点分别入队(放置重复入队,需只要一入队就标记已访问而不是取出时再进行标记),直至队为空。

/*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解法的更多相关文章

  1. HDU 1312 Red and Black --- 入门搜索 DFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  2. HDU 1312:Red and Black(DFS搜索)

      HDU 1312:Red and Black Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & ...

  3. HDU 1312 Red and Black(最简单也是最经典的搜索)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Limit: 2000/1000 MS (Java/Oth ...

  4. 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 ...

  5. 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 ...

  6. hdu 1312:Red and Black(DFS搜索,入门题)

    Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  7. 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 ...

  8. HDU 1312 Red and Black (DFS & BFS)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:有一间矩形房屋,地上铺了红.黑两种颜色的方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相 ...

  9. HDU 1312 Red and Black(bfs)

    Red and Black Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descr ...

随机推荐

  1. POJ 1741 树的点分治

    题目大意: 树上找到有多少条路径的边权值和>=k 这里在树上进行点分治,需要找到重心保证自己的不会出现过于长的链来降低复杂度 #include <cstdio> #include & ...

  2. 百胜集团李磊:BPM实现业务流程全过程无缝链接

    作为全球最大的餐饮企业之一,百胜集团在形成规模化连锁经营效应的同时,战略地利用信息化手段,强化管理和运营水平,打造企业的核心竞争力.通过流程梳理,百胜集团实现了以规模化.规范化.信息化和现代化为主题的 ...

  3. Xlistview的values下的界面

    <!-- 下拉刷新,上拉加载更多 -->    <string name="xlistview_header_hint_normal">下拉刷新</s ...

  4. matlab和C/C++混合编程--Mex (六)参数传递

    最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题.现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加.首先讲讲写Mex的一些常规规定,然后我 ...

  5. iOS知名第三方框架和流行APP们所用的第三方框架小结

    网易新闻AppleReachabilityASIHTTPRequestEGOTableViewPullRefreshGTMNSString+HTMLMGTemplateEngineMPOAuthReg ...

  6. GCD的多线程实现方式,线程和定时器混合使用

    GCD (Grand Central Dispatch) 性能更好,追求性能的话 1.创建一个队列 //GCD的使用 //创建一个队列 dispatch_queue_t queue = dispatc ...

  7. angularjs 选项卡 --- 自定义属性

    <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...

  8. Linksys WRT120N路由器备份文件解析

    Perusing the release notes for the latest Linksys WRT120N firmware, one of the more interesting comm ...

  9. WebGis应用开发框架

    转自:http://www.cnblogs.com/zitsing/archive/2012/03/02/2377083.html 前言 Web Gis顾名思义就是通过浏览器方式操作的地理系统.通过浏 ...

  10. hdu - 2083 - 简易版之最短距离

    找到中位数 , 根据对称性 , 当中位数需要两个数取中值的时候不需要取 , 只需要其中的任意一个数几个 例如四个数 1 , 2 , 3 , 4 . 这四个数 , 其中的 2 和 3 都可以 . 然后求 ...