题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1312

方法:对探寻到的点的数目累加的时候,可以选择在刚探寻到一个点时对数目加1,也可以在一个新探寻到的点开始进行新一层探寻的时候对数目加1,即前者记录有多少个点进队列,后者记录有多少出。

感想:第2次做的时候选择了第2种方法,两种方法都可以过,本代码使用第一种。

代码:

View Code

#include <iostream>
#include <queue>
using namespace std;
int rowsCount,columsCount;
bool visited[25][25];
char tiles [25][25];
int derection[4][2];
char red = '#';
char man='@';
char black ='.';
struct point
{int x,y;
};
bool canGo(int x,int y)
{if(x<0||x>=rowsCount ||y<0||y>=columsCount)return false;if(tiles[x][y] == red)return false;return !visited[x][y];
}
int search(int startX, int startY)
{queue<point*> Q;point* start = (point*)malloc(sizeof(point));start->x = startX;start->y = startY;visited[start->x][start->y] = true;Q.push(start);int result = 0;while(!Q.empty()){point* tempP = Q.front();Q.pop();result++;for(int i=0;i<4;i++){int x = derection[i][0]+tempP->x;int y = derection[i][1]+tempP->y;if(canGo(x,y)){point* newP = (point*)malloc(sizeof(point));newP->x = x;newP->y = y;visited[x][y] = true;Q.push(newP);}}delete[] tempP;}while(!Q.empty()) {delete [] Q.front();Q.pop();}return result;
}void main()
{derection[0][0] = 1;derection[0][1] = 0;derection[1][0] = 0;derection[1][1] = 1;derection[2][0] = -1;derection[2][1] = 0;derection[3][0] = 0;derection[3][1] = -1;int s=0,t=0;while( scanf("%d %d",&columsCount,&rowsCount) && columsCount!=0 && rowsCount!=0 ){for(int i =0;i<rowsCount;i++)for(int j=0;j<columsCount;j++){cin>>tiles[i][j];visited[i][j]= false;if(tiles[i][j]==man){s = i;t = j;tiles[i][j] = black;}} cout<<search(s,t)<<endl;}
}

转载于:https://www.cnblogs.com/kbyd/archive/2013/04/17/3025718.html

[HDU] 1312Red and Black -用广搜求能探寻到的点的数目相关推荐

  1. hdu 1281(二分图匹配+增广路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 解题思路: 把棋盘的行x看成二分图左边的点,列y看成二分图右边的点,那么就把可以放车的位置看成是 ...

  2. POJ 3278 / hdu 2717 Catch That Cow (广搜)

    POJ 3278 HDU 2717 广搜题,用一个数组标记就可以过,不标记的话会超内存. 另外,poj的数据要比hdu强一些,比如0 100,这种数据.不特判的话会RE.不过如果不特判,在poj上用C ...

  3. hdu 2612 Find a way (广搜)

    Problem Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. L ...

  4. HDU ACM 1181 变形课 (广搜BFS + 动态数组vector)-------第一次使用动态数组vector

    http://acm.hdu.edu.cn/showproblem.php?pid=1181 题意:给我若干个单词,若单词A的结尾与单词B的开头相同,则表示A能变成B,判断能不能从b开头变成m结尾. ...

  5. HDU ACM 1728 逃离迷宫 (广搜BFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意:给出一张图,转弯数k,起点(x1,y1),(x2,y2)判断能不能最多只转k个弯时从起点走到终点 输 ...

  6. hdu 1253 胜利大逃亡 (广搜)

    题目链接 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个 ...

  7. [数据结构] 迷宫问题(栈和队列,深搜和广搜)

    代码: #include <iostream> #include <string.h> #include <stack> #include <queue> ...

  8. ssl1104-USACO 2.1城堡(foodfill)【图论,广搜】

    ##前言 由于这道题比较难,有不好描述,我就直接贴题目了. ##Description 以一个几乎超乎想像的运气,农民约翰在他的生日收到了一张爱尔兰博彩的奖券. 这一张奖券成为了唯一中奖的奖券. 农民 ...

  9. 力扣 547. 朋友圈 c语言 三种解法 深搜 广搜 并查集。

    题目: 并查集: /*力扣 547 朋友圈 并查集 c语言 2020/12/14 1:04 by ksks14*/ /*初始化 查找 合并*/ #define maxsize 10000 int fl ...

最新文章

  1. 【转】PendingIntent的总结
  2. 我来悟微服务(3)-需求管理
  3. Lock 与 InterruptedException
  4. DAY2-python基础1
  5. 拼多多市值超2100亿美元 黄峥成中国第二大富豪
  6. 哔哩哔哩2019年Q4及全年财报:全年营收67.8亿元,同比增长64%
  7. 聊聊flink的FsStateBackend
  8. 持续集成部署Jenkins工作笔记0019---19.在Jenkins中指定Git客户端位置
  9. setTimeout/setInterval伪异步
  10. (工具)政企版WPS-没广告弹窗超简洁
  11. k均值聚类算法考试例题_k均值算法(k均值聚类算法计算题)
  12. Xshell如何设置快捷复制、粘贴热键
  13. 微信小程序开发部署发布可以在10分钟内完成
  14. app上架小米应用商店流程
  15. ps一点等于多少厘米_请问PS中“像素”和“厘米”是怎么换算的?
  16. IBM TSM 6.3学习笔记(1)
  17. coding coffee HTML文档
  18. pyQt5 学习笔记(2)基本窗口绘画
  19. 相亲网站平台制作建设,第九篇
  20. 工业数字化转型 — 工业机器人

热门文章

  1. oracle下载配置文件,oracle 11G、12C BBED 配置和库文件下载!
  2. python manager模块_Python 并发模块
  3. 95-874-040-源码-批处理-Flink批处理优化器值成本估算
  4. 【Elasticsearch】搜索引擎从0到1 有赞 视频笔记
  5. 【ElasticSearch】es ResourceWatcherService 的 初始化 启动 源码解析
  6. 【flink】flink 复杂事件处理 CEP
  7. 【java】java 关键字: synchronized详解
  8. 【Jvm】jvm -XX 参数 VM 调优参数
  9. 【算法】BloomFilter 与 CuckooFilter
  10. 【Flink】Unable to retrieve any partitions with KafkaTopicsDescriptor: Fixed Topics ([xxx)]