当前位置: 首页 > wzjs >正文

可信的郑州网站建设购买域名如何建设网站

可信的郑州网站建设,购买域名如何建设网站,唐山高端网站建设,网站开发使用的软件0岛屿个数 - 蓝桥云课 问题描述 小蓝得到了一副大小为 MN 的格子地图,可以将其视作一个只包含字符 0(代表海水)和 1(代表陆地)的二维数组,地图之外可以视作全部是海水,每个岛屿由在上/下/左/右…

0岛屿个数 - 蓝桥云课

问题描述

小蓝得到了一副大小为 M×N 的格子地图,可以将其视作一个只包含字符 '0'(代表海水)和 '1'(代表陆地)的二维数组,地图之外可以视作全部是海水,每个岛屿由在上/下/左/右四个方向上相邻的 '1' 相连接而形成。

在岛屿 A 所占据的格子中,如果可以从中选出 k 个不同的格子,使得他们的坐标能够组成一个这样的排列:
(x0​,y0​),(x1​,y1​),…,(xk−1​,yk−1​),其中 (xi+1​modk,yi+1​modk) 是由 (xi​,yi​) 通过上/下/左/右移动一次得到的(0≤i<k−1),此时这 k 个格子就构成了一个“环”。如果另一个岛屿 B 所占据的格子全部位于这个“环”内部,此时我们将岛屿 B 视作是岛屿 A 的子岛屿。若 B 是 A 的子岛屿,C 又是 B 的子岛屿,那 C 也是 A 的子岛屿。

请问这个地图上共有多少个岛屿?在进行统计时不需要统计子岛屿的数目。

输入格式

第一行一个整数 T,表示有 T 组测试数据。

接下来输入 T 组数据。对于每组数据,第一行包含两个用空格分隔的整数 M、N 表示地图大小;接下来输入 M 行,每行包含 N 个字符,字符只可能是 '0' 或 '1'。

输出格式

对于每组数据,输出一行,包含一个整数表示答案。

样例输入

2
5 5
01111
11001
10101
10001
11111
5 6
111111
100001
010101
100001
111111

样例输出

1
3

样例说明

对于第一组数据,包含两个岛屿,下面用不同的数字进行了区分:

01111
11001
10201
10001
11111

岛屿2在岛屿1的“环”内部,所以岛屿2是岛屿1的子岛屿,答案为1。

对于第二组数据,包含三个岛屿,下面用不同的数字进行了区分:

111111
100001
020301
100001
111111

注意岛屿3并不是岛屿1或者岛屿2的子岛屿,因为岛屿1和岛屿2中均没有“环”。

评测用例规模与约定

对于30的评测用例,1 ≤ M, N ≤ 10。

对于100的评测用例,1 ≤ T ≤ 10,1 ≤ M, N ≤ 50。

思路:

因为题目要求求得是岛屿的数量,如果一个环的岛屿,里面的岛屿不算岛屿。如果不是一个环,那么里面的岛屿仍然算一个岛屿。

1.

所以,我们可以先确定外海范围,通过8个方向的搜索,标记外海能到达的所有地方。bfs

2.

然后,标记所有陆地数量,同时用一个bool变量跟踪任何一个陆地是否能接触到外海。如果可以接触到外海,说明这个这个陆地(构成的岛屿)不是在环内的岛屿。dfs

代码如下:
 

#include<bits/stdc++.h>
using namespace std;
int dx[] = {-1,0,1,0};
int dy[] = {0,1,0,-1};
int dxe[] = {-1, -1, 0, 1, 1, 1, 0, -1};
int dye[] = {0, 1, 1, 1, 0, -1, -1, -1};
char a[55][55];
bool vis[55][55];
int n,m,ans = 0;
int T;
bool found = false;
struct Node{int x,y;
};
bool check(int x,int y)//检查周围是否为外海 
{for(int i = 0 ; i < 4 ; i++){int tx = x + dx[i];int ty = y + dy[i];if(tx >= 0 && tx <= n+1 && ty >= 0 && ty <= m + 1 && a[tx][ty] == '*')return true;}return false;
}
void dfs(int x,int y)
{vis[x][y] = true;//标记为岛屿 if(!found && check(x,y)){found = true;}for(int i = 0 ; i < 4 ; i++){int tx = x + dx[i];int ty = y + dy[i];if(tx >= 1 && tx <= n && ty >= 1 && ty <= m&& !vis[tx][ty] && a[tx][ty] == '1'){dfs(tx,ty);}}
}
void bfs(int x,int y)
{queue <Node> p;p.push({x,y});a[x][y] = '*';while(!p.empty()){auto temp = p.front();p.pop();int x = temp.x;int y = temp.y;for(int i = 0 ; i < 8 ; i++)//外海斜着也会被渗入,所以需要八个方向 {int tx = x + dxe[i];int ty = y + dye[i];if(tx >= 0 && tx <= n+1 && ty >= 0 && ty <= m + 1 && a[tx][ty] == '0'){a[tx][ty] = '*';//设置为外海p.push({tx,ty}); }}}}
int main(void)
{cin >> T;while(T--){ans = 0;memset(vis,false,sizeof(vis));//每组数据重置vis数组 cin >> n >> m;for(int i = 0 ; i <= n + 1 ; i++)//扩大一个格子,方面搜索外海 {for(int j = 0 ; j <= m + 1 ; j++){a[i][j] = '0';}}for(int i = 1 ; i <= n ; i++)//输入矩阵 {for(int j = 1 ; j <= m ; j++){cin >> a[i][j];}}bfs(0,0);//标记外海 for(int i = 1 ; i <= n ; i++)//检查每一个岛屿 {for(int j = 1 ; j <= m ; j++){if(a[i][j] == '1' && !vis[i][j]){found = false; dfs(i,j);if(found)ans++;}}}cout << ans << '\n';}return 0;
}


文章转载自:

http://HIl5ZxX3.dtzsm.cn
http://ofehoSqb.dtzsm.cn
http://r8YpuZMg.dtzsm.cn
http://Wxy4YBcz.dtzsm.cn
http://wiPTzQhO.dtzsm.cn
http://FloeRp6q.dtzsm.cn
http://JR3MZhAG.dtzsm.cn
http://dyXtqG9G.dtzsm.cn
http://wBtbHeTi.dtzsm.cn
http://dwGCWc3C.dtzsm.cn
http://MDnZzoT8.dtzsm.cn
http://S1xQ0UMU.dtzsm.cn
http://f6fA20Hz.dtzsm.cn
http://ugh16wb1.dtzsm.cn
http://9Rm5wBMb.dtzsm.cn
http://gIjW574s.dtzsm.cn
http://CgiCIOOs.dtzsm.cn
http://T4lVYsGB.dtzsm.cn
http://nTqPF8OR.dtzsm.cn
http://i6PpX8FT.dtzsm.cn
http://NWUpCzHU.dtzsm.cn
http://Joj5XMYp.dtzsm.cn
http://AWmelDut.dtzsm.cn
http://WPFJh5SA.dtzsm.cn
http://0nhToqyF.dtzsm.cn
http://tpMD4UQE.dtzsm.cn
http://2TM39Tfp.dtzsm.cn
http://hu5VW8vg.dtzsm.cn
http://Hyj3IOqZ.dtzsm.cn
http://x3Z1JX43.dtzsm.cn
http://www.dtcms.com/wzjs/733812.html

相关文章:

  • 聊城做wap网站找谁化工外贸网站建设
  • 自动生成网页的工具企业网站seo推广
  • 律师事务所公司类网站建设案例06年可以做相册视频的网站
  • 网站开发问卷调查海澜之家网站建设水平
  • 网站建设和优化需要几个人建设工程合同的内容
  • 做彩票网站模板网站建设中界面模板下载
  • 长沙建站找有为太极环境遵商务网站建设与维护流程
  • 农八师建设兵团社保网站中国材料价格网
  • 北京住房建设部网站首页建设银行储蓄卡余额查询系统
  • 建立企业网站选什么好中国网站开发用盗版犯法
  • 杭州网站建设及推广网络舆情处置工作方案
  • 微网站怎么免费做大连网页设计制作公司
  • 海外免费网站推广有哪些千锋教育出来好找工作吗
  • 企业营销网站wordpress小夜
  • 巧克力网站模板唐山电商网站建设
  • 建设工程资料网站wordpress ip地址修改
  • 什么网站做任务上海网站设计大连
  • 广州代做公司网站电脑网站 发展移动端
  • 自建网站国家审核要多久wordpress.org 移除
  • 做商城网站系统网站开发线上销售技巧
  • 全国新农村建设中心网站潍坊做网站多少钱
  • 苏州市建设局网站地址谷歌有趣的网站
  • 怎样建立一个简单的网站wordpress直播播放器
  • 易语言做试用点击网站网页建站专业公司
  • 网站建设问题分类和排除方法分析网站集约化 建设方案
  • 建设国际网站百度网站怎样优化排名
  • 怎么知道网站被百度k了留言板网站建设总结
  • 定制网站的好处南翔企业网站开发建设
  • 沧州网站建设专业的公司4000-262-安徽科技网站建设
  • 网站定制myeclipse怎样做网站