7-3 BFS应用 LC的绝地求生 (25 分)
7-3 BFS应用 LC的绝地求生 (25 分)
L**C 在他小时候特别迷恋绝地求生,他就幻想着有一天能被扔到一个孤岛,他想算出整个岛屿的面积。
简化题意为一个 n∗n 的地图,共有 n∗n 个面积为 1 格子,地图左上角的格子编号为 (1,1) 右下角的格子编号为为 (n,n) 。地图上为每个格子做了标记,若编号为 (x,y) 的格子标记位 0 则代表这个区域是海,否则为陆地。
现在 L**C 空投到 (s**x,sy) 位置,他想知道他所在的岛屿的面积。
注意,可能不止一个岛屿,只用求 L**C 所在的岛屿面积。
输入格式:
第一行给出一个正整数 n(1<=n<=50) 表示地图的大小为 n∗n
第二行给出两个正整数 s**x,sy 表示 L**C 空投到的位置
之后的 n 行,每行给出 n 个整数。其中的第 i 行第 j 列的整数若为 0 则代表编号 (i,j) 位置是海洋,否则代表陆地。
保证数据一定合法,且 L**C 不会落在海里。
输出格式:
在一行中输出 L**C 所在岛屿的面积。
输入样例:
6
5 3
0 0 0 1 1 0
1 0 0 1 1 0
0 0 1 0 1 1
1 1 0 1 0 1
0 1 1 1 0 1
1 1 0 1 1 1
输出样例:
19
代码:
#include <iostream>
#include <queue>
using namespace std;struct Node
{ //每个点int x; //行数int y; //列数
};
int a[101][101];
queue<Node> q;
int n, sx, sy;
int ret = 1;void bfs()
{int next[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};q.push(Node{sx - 1, sy - 1});a[sx - 1][sy - 1] = 2;while (q.size() > 0){Node t = q.front();q.pop();for (int i = 0; i < 4; i++){int x = t.x + next[i][0];int y = t.y + next[i][1];if (x < 0 || x > n - 1 || y < 0 || y > n - 1){continue;}else if (a[x][y] == 1){a[x][y] = 2;ret++;q.push({x, y});}}}cout << ret << endl;
}
int main()
{cin >> n >> sx >> sy;for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){cin >> a[i][j];}}bfs();return 0;
}
#include <iostream>
#include <queue>
using namespace std;struct Node
{ //每个点int x; //行数int y; //列数
};
int a[101][101];
int n, sx, sy;
int ret = 1;
void dfs(Node t)
{int next[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};for (int i = 0; i < 4; i++){int x = t.x + next[i][0];int y = t.y + next[i][1];if (x < 0 || x > n - 1 || y < 0 || y > n - 1){continue;}else if (a[x][y] == 1){a[x][y] = 2;ret++;dfs(Node{x, y});}}
}
int main()
{cin >> n >> sx >> sy;for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){cin >> a[i][j];}}a[sx - 1][sy - 1] = 2;dfs(Node{sx - 1, sy - 1});cout << ret << endl;return 0;
}
7-3 BFS应用 LC的绝地求生 (25 分)相关推荐
- 7-23 LC的绝地求生分数 25
LC 在他小时候特别迷恋绝地求生,他就幻想着有一天能被扔到一个孤岛,他想算出整个岛屿的面积. 简化题意为一个 n∗n 的地图,共有 n∗n 个面积为 1 格子,地图左上角的格子编号为 (1,1) 右下 ...
- python mro c3_绝地求生辅助_Python的多继续问题-MRO和C3算法
博弈论--两人取子游戏与威佐夫博弈,隐藏在背后的黄金分割dnf辅助Python 中的方式剖析顺序(Method Resolution Order, MRO)界说了多继续存在时 Python 注释器查找 ...
- 吃鸡服务器炸了会显示什么,绝地求生服务器再爆炸,还能不能好好吃鸡了?
原标题:绝地求生服务器再爆炸,还能不能好好吃鸡了? 觉得小编写的还不错,就点个关注哦! 昨晚(5月4日)绝地求生服务器再次出现爆炸行为,难道是因为最近更新太平凡,改动太大?应该不是这个原因,就以前的状 ...
- 绝地求生现在服务器稳定吗,吃鸡服务器不稳定?《绝地求生》国服宣布将首次使用超性能服务器...
2月26日消息 要说目前最受国内游戏爱好者期待的游戏,相信不少小伙伴都会投火遍全球的<绝地求生>一票!而据最新消息显示,为了给玩家们带来更加优秀的游戏体验,<绝地求生>国服将首 ...
- 你需要启用steam社区界面功能以进行购买_绝地求生购买衣服方法
一.首先,我们需要来到Steam官网,点击右上角进行登录,然后我们输入Steam账号密码登录. 二.之后我们在首页上方找到Steam社区,在Steam社区中找到[市场]一选项.点击进入Steam市场. ...
- 绝地服务器维护7月5日,绝地求生7月5日更新到几点 吃鸡更新维护公告
原标题:绝地求生7月5日更新到几点 吃鸡更新维护公告 绝地求生将会在7月5日的早上10点进行一次新版本的更新,这次没什么重要的更新内容,预计是3个小时,估计会提早,大家可以做好准备,下面就来为大家分享 ...
- 传微软有意收购EA公司,连《绝地求生》的蓝洞也想一并收入囊中
传闻称微软有可能收购艺电,Valve或<绝地求生>开发商PUBG Corp. 近日,据外媒报道,微软正在计划收购EA.更进一步的是,EA不只是微软唯一的目标,PUBG和Valve也在微软的 ...
- 吃鸡2019年5月7日服务器维护,绝地求生正式服5月17日停机更新维护多久到几点
绝地求生的正式服在1月27日周三这天即将开启停机维护,此次的停机维护时间预计是五个小时,维护的内容就是修复一些bug问题,很多玩家还不清楚有什么更新内容,下面就来为大家分享一下绝地求生的更新维护公告. ...
- 绝地求生 android版支持蓝牙吗,绝地求生怎么蓝牙耳机设置听脚步 | 手游网游页游攻略大全...
发布时间:2017-01-03 声音调大之后,枪声.飞机.爆炸与开车声太大非常烦人,且脚步声也不是很清晰,那么究竟如何设置能让大家快速变为听声辩位高手呢?今天小编带来"UID13647447 ...
最新文章
- 技术人如何搭建自己的技术博客
- 3.如何安装Apache Spark
- Anconda安装教程
- sharepoint 2010 记录管理 对象模型
- PHP中empty,is_null,isset中的异同和功能
- vfp报表纸张设置_VFP 9.0中实现多种自定义纸张格式的报表打印
- (89)Verilog HDL系统函数和任务:$fwrite
- 你们身边成功的生意人有哪些特质
- 《软件方法》第8章 分析 之 分析类图——知识篇Part1(20211029更新)
- SQL Server数据库被置疑的解决方案
- MAC苹果应用软件,财务管理,三D制图,清理神器
- 服务器在线测速系统源码
- 阅读论文《MOJITALK: Generating Emotional Responses at Scale》——ACL2018
- [AGC004E] Salvage Robots (DP)
- 三种显色方法ECL、NBT/BCIP和DAB的对比
- 中国开发者真实现状:40 岁不做开发,算法工程师最稀缺!
- 网页游戏如何发送数据封包的思路和核心代码具体实现
- Stduino学习(二十六)水位传感器模块
- python正整数平方根_python怎么求一个数的平方根
- Error: Running Homebrew as root is extremely dangerous and no longer supported. As Ho【已解决】
热门文章
- python如何简便使用cumsum函数完成绘制累计概率分布图(CDF)
- 通过准确性、可解释性、校准度和忠实度,对ChatGPT的能力进行全面评估
- java中的睡眠操作(sleep)
- C# 往string [] arr 数组插入元素
- 【小知识】讲一讲软件无线电Software-Defined Radio
- 火狐正用心打造平板浏览器
- Java多线程实现简单抢红包
- linux下socket编程:区分close()与shutdown()
- Lombok 之 Data Value
- 用python创建一个新文件_Python创建文件和追加文件内容实例