poj 1979 Red and Black(BFS)
题意:在一个矩形房间里面被瓦片覆盖,分为白色的和红色的,白的可以走,红的不能走,起始位置在白色的瓦片上,可以上下左右移动;
".":白色的瓦片;
"#":红色的瓦片;
"@":起始位置;
计算可以移动到的白色瓦片的数量;
思路:bfs搜索,设一个变量sum记录,进队就自加;
代码如下:
#include <iostream> #include <cstdio> #include <memory.h> #include <queue> using namespace std; char map_[25][25]; int w,h; struct Node{int x,y; }; int vis[25][25]; int ax[4] = {-1,0,1,0}; int ay[4] = {0,1,0,-1}; int BFS(Node no){queue<Node> mq;while(!mq.empty()){mq.pop();}mq.push(no);vis[no.x][no.y] = 1;int sum = 0;while(!mq.empty()){Node de = mq.front();mq.pop();sum++;for(int i=0;i<4;i++){Node d = de;d.x =de.x+ax[i];d.y =d.y+ay[i];if(vis[d.x][d.y]==0&&d.x>=0&&d.x<h&&d.y>=0&&d.y<w&&map_[d.x][d.y]=='.'){vis[d.x][d.y] = 1;mq.push(d);}}}return sum; }int main() {while(~scanf("%d%d",&w,&h)){if(w==0&&h==0)return 0;int x,y;memset(map_,0,sizeof(map_));memset(vis,0,sizeof(vis));for(int i=0;i<h;i++){scanf("%s",map_[i]);for(int j=0;map_[i][j];j++){if(map_[i][j]=='@'){x = i;y = j;}}}Node no;no.x = x;no.y = y;int a = BFS(no);printf("%d\n",a);}return 0; }
转载于:https://www.cnblogs.com/hnzyyTl/p/4841706.html
poj 1979 Red and Black(BFS)相关推荐
- POJ 1979: Red and Black
2019独角兽企业重金招聘Python工程师标准>>> 题目在此 解题思路:直接 DFS 或 BFS 就行了. 之前被 STL 拖过后腿,偏执劲儿又上来了,这次刻意不用 std::q ...
- POJ 1979 Red and Black (简单dfs)
题目: 简单dfs,没什么好说的 代码: #include <iostream> using namespace std; typedef long long ll; #define IN ...
- POJ 1979 Red and Black DFS
简单DFS 注意边界就行了. // #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstd ...
- Red and Black 红与黑 POJ 1979 深度搜索算法
原题 Red and Black 题意: 只走黑砖,不走红砖,最多能走多少 黑砖. 有一个长方形的房间,覆盖了正方形的磁砖.每块磁砖的颜色,要么是红色,要么是黑色.一名男子站在一块黑色的磁砖上.他 ...
- POJ NO.1979 Red and Black(DPS,搬黑砖,,,)
问题描述: 一个广场由黑砖和红砖组成,给你一个起点看你(起点算是黑砖)能办多少黑砖. 题目链接:点击打开链接 思路: 问题转换 ----> 把所有能到达的 ' . '(黑砖)全换成某个字符(如' ...
- POJ 1979 红与黑
题目地址: http://poj.org/problem?id=1979 或者 https://vjudge.net/problem/OpenJ_Bailian-2816 Red and Blac ...
- POJ 3278 Catch That Cow BFS
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 32071 Accepted: 9866 D ...
- poj 2251 Dungeon Master (三维bfs)
http://poj.org/problem?id=2251 简单bfs,只不过是三维的... 唯一的坑点在输出上... Escaped in %d minute(s) 这意思是答案为1输出minut ...
- POJ - 3126 - Prime Path(BFS)
Prime Path POJ - 3126 题意: 给出两个四位素数 a , b.然后从a开始,每次可以改变四位中的一位数字,变成 c,c 可以接着变,直到变成b为止.要求 c 必须是素数.求变换次数 ...
最新文章
- mysql 清空row_MySQL_TRUNCATE_清空table里的记录
- 两条曲线所围成的面积_人教版数学六年级上册 5.3:圆的面积(一) 微课视频|知识点|课件解析|同步练习...
- Matlab回归分析regress和polyfit
- LeetCode--33. 搜索旋转排序数组(二分法)
- php yaf 教程,干货:PHP YAF框架实践教程——配置与多模块
- Bitcoin是什么意思
- 2017-07-12(数据库)
- 追赶法matlab算法,追赶法matlab程序
- 数论基础(浅谈数论的部分实现)
- Dell Precision M4800 AppleALC声卡驱动修复教程
- MATLAB计算图片的标准差与方差 MEAN STD
- UC3842好坏的判断方法
- java天才_哪个天才写的?太精辟了
- SQL Server2005 只有配置工具,而没有查询分析器、企业管理器的解决方法
- 移动端web设计尺寸_手机移动端网页按钮设计尺寸及间距规范
- 界面美化 —— 布局
- 华为鸿蒙系统小窗口,mate30pro升鸿蒙后小窗应用调不出来
- 用Python做一个好玩的朋友圈九宫格抽奖
- 6-1 Person类
- ThinkPHP根据时间显示不同的问候语