【HDU】1312 Red andBlack (DFS&BFS经典好题)
Red and Black
题目
题解
找出所能到达的所有黑色的数量,用DFS和BFS均可。
BFS:
#include <iostream>
#include <queue>
#define judge(x,y) (x>=0&&x<h&&y>=0&&y<w) //宏定义判断坐标是否越界
using namespace std;
//@start: 2020-04-02 22:20:48
char mp[25][25];//地图
int dir[4][2]={1,0,0,1,-1,0,0,-1};//方向数组
int w,h,ans,dx,dy;
struct node
{//bfs需要结点存入queue
int x,y;
};
void bfs(int x,int y)
{
ans=1;
queue<node> q;
node s,t;
s.x=x,s.y=y;
q.push(s);
while(!q.empty())
{
s = q.front();q.pop();
for(int i=0;i<4;i++)
{//扩展上下左右四个点
t.x = s.x + dir[i][0];
t.y = s.y + dir[i][1];
if(mp[t.x][t.y]=='.'&&judge(t.x,t.y)){
//可走且坐标合法
ans++;
mp[t.x][t.y]='#';
q.push(t);
}
}
}
}
int main()
{
while(cin>>w>>h && w && h)
{
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
cin>>mp[i][j];
if(mp[i][j]=='@')
dx=i,dy=j;
}
}
ans=0;
bfs(dx,dy);
cout<<ans<<endl;
}
return 0;
}

DFS:
#include <iostream>
#include <cstdio>
#define judge(x,y) (x>=0&&x<h&&y>=0&&y<w)
using namespace std;
//@start: 2020-04-03 08:48:44
char mp[25][25];
int dir[4][2] = {1,0,0,1,-1,0,0,-1};
int w,h,ans,dx,dy;
void dfs(int x,int y)
{
ans++;
mp[x][y]='#';
for(int i=0;i<4;i++)
{
int tx = x + dir[i][0];
int ty = y + dir[i][1];
if(judge(tx,ty) && mp[tx][ty]=='.'){
dfs(tx,ty);
}
}
}
int main()
{
while(cin>>w>>h && w && h)
{
ans=0;
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
cin>>mp[i][j];
if(mp[i][j]=='@'){
dx=i;dy=j;
}
}
}
dfs(dx,dy);
cout<<ans<<endl;
}
return 0;
}
【HDU】1312 Red andBlack (DFS&BFS经典好题)的更多相关文章
- HDU 1312 Red and Black(经典DFS)
嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 一道很经典的dfs,设置上下左右四个方向,读入时记下起点,然后跑dfs即可...最后答 ...
- HDU 1312 Red and Black --- 入门搜索 BFS解法
HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...
- 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(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(最简单也是最经典的搜索)
传送门: 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)
题目链接: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 第一题搜索!
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)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:有一间矩形房屋,地上铺了红.黑两种颜色的方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相 ...
随机推荐
- 开学考--MIS系统(javaweb的开学练习--网络新闻发布系统)
关于本次考试的相关理解 看到题目的时候,第一反应是这道题不难,之前已经做过十分类似的题目了,然后对于难度是很有自信的(当然,对于用户的权限管理部分,还是很懵): 而第二反应就是,题量挺大的,我在这有限 ...
- 分布式CAP_BASE博客参考
https://blog.csdn.net/lixinkuan328/article/details/95535691 CAP 一致性(Consistency) 可用性(Availability) 分 ...
- MySQL学习(十一)B树与B+树了解
参考博客:https://www.cnblogs.com/kismetv/p/11582214.html
- NIM游戏/SG函数
NIM游戏 先看一下一维 NIM游戏. 有一堆大小为 \(n\) 的石子,甲和乙轮流从石堆里面拿石子,不能一次拿掉所有石子,取走最后一个石子的人获胜,甲先开始,谁是必胜的? 显然,谁先手,谁就获胜.那 ...
- 垃圾回收之G1收集过程
G1 中提供了 Young GC.Mixed GC 两种垃圾回收模式,这两种垃圾回收模式,都是 Stop The World(STW) 的. G1 没有 fullGC 概念,需要 fullGC 时,调 ...
- 【技巧存档】常用网站如CSDN打开时加载慢怎么办?
找到最快站点,更改host文件 F12打开控制台,查看网络中哪些站点的请求标红,如 img-home.csdnimg.cn 去站长之家测试ping值,找到最低ping值的ip,这里找到安徽合肥,ip为 ...
- python入门教程之八列表,字典,字符串,集合常用操作
一列表常用方法 Python包含以下函数: 序号 函数 1 cmp(list1, list2)比较两个列表的元素 2 len(list)列表元素个数 3 max(list)返回列表元素最大值 4 mi ...
- AtCoder Beginner Contest 236 E - Average and Median
给定一个序列,要求相邻两个数至少选一个,求选出数的最大平均数和最大中位数 \(\text{sol}\):二分答案. 二分平均数\(\text{mid}\),将每个元素减去\(\text{mid}\), ...
- IT技术相关学习网站推荐
引入在线jQuery的地址 http://code.jquery.com 唠嗑吧 IT技术经验交流 http://www.laodao8.com 博学谷视频库 传智播客 http:// ...
- JVM的内存分配及各种常量池的区别(静态常量池、运行时常量池、字符串常量池)
JVM内存分配 先了解下JVM中的内存分配,此处以hotspot vm为例(官方jdk采用的vm) 程序计数器 栈 1. 虚拟机栈 2. 本地方法栈 Java堆 堆内存是各个线程共享的区域 方法区 它 ...