本来一个很简单的题因为一个极其愚蠢的错误卡了非常久……

题目描述

输入: 输入n+1行,第一行为正整数n,表示地图的大小,n<=100
之后n行每行输入n个字符,由*和#组成,其中*表示海洋,#表示陆地
两块陆地在上下左右四个方向上有间接接壤视为同属于一个大陆
例如

*#
#*

视为拥有两块大陆
输出: 有多少块大陆
输入样例

5
*###*
**##*
#****
#*#**
***##

输出样例

4

思路

每碰到一块大陆,就计数,然后把这一整块大陆变成海洋,使其不对后续的计数产生干扰。
由于某一块大陆可能有非常多的土地接壤,考虑用递归来实现所有陆地的反转。
符号并不重要,将地图二值化,*->0->海洋,#->1->陆地

采用加边法来规避数组越界的问题,将实际操作的范围规定为[1,n]*[1,n]而非从0开始计数,虽然浪费了空间,但是使得i-1和j-1的访问在物理上不会越界,不会导致程序卡死的问题,同时也简化了程序设计的逻辑。

尬点

读入时需要注意n后的回车要吃掉,每行字符串后面的回车也要吃掉,否则会导致读入的数组不正常。
之前卡了很长一段时间,是因为我在定义了一个全局变量n之后,写主函数时又手贱定义了一个n。
根据语法,这没有任何错误,在局部变量与全局变量重名时,函数内使用局部变量,这是语言的特性,也不止C有。
可是这就导致读入的n并没有保存到全局的n中,子函数中访问到的n都是0,于是全部都工作不正常,都没输出……
我还纳闷咋没输出……还以为是递归的问题,调了半天,后来尝试想把打印数组的过程写成子函数的时候发现了错误。实属hape。

参考

和过去的两个题有点像,特别是前者。
计算机导论模拟测试练习(2018年秋)I. 灯矩阵
第四次机考(2019)D. 卫星照片二

#include <stdio.h>
#define MAX 100
int n;
int map[MAX+2][MAX+2]={0};
void reverse(int i,int j);int main(int argc, char const *argv[])
{int i,j,cnt=0;char ch;scanf("%d",&n);getchar();for(i=1;i<=n;++i)for(j=1;j<=n;++j){ch=getchar();if(j==n) getchar();map[i][j]=(ch=='*')?0:1;}for(i=1;i<=n;++i)for(j=1;j<=n;++j)if(map[i][j]){++cnt;reverse(i,j);}printf("%d\n",cnt );return 0;
}void reverse(int i,int j)
{   if(i<1||j<1||i>n||j>n) return ;map[i][j]=0;if(map[i-1][j]) reverse(i-1,j);if(map[i+1][j]) reverse(i+1,j);if(map[i][j-1]) reverse(i,j-1);if(map[i][j+1]) reverse(i,j+1);
}

buaacoding ?.海洋与陆地相关推荐

  1. Google Earth Engine(GEE)——Sentinel-3 OLCI EFR:海洋和陆地彩色地球观测全分辨率数据集

    海洋和陆地颜色仪器 (OLCI) 地球观测全分辨率 (EFR) 数据集包含 21 个光谱带的顶部大气辐射,中心波长范围在 0.4μm 和 1.02μm 之间,空间分辨率为 300m,每 2 天覆盖一次 ...

  2. 《mSystems》比较宏基因组学探究海洋和陆地生态系统中磷酸盐分解代谢途径

    比较宏基因组学(Comparative Metagenomics)是目前非常流行的一个概念,也是目前使用最多的研究方式,简单的说就是通过不同样本之间的比较来回答最初的"科学问题". ...

  3. 如果陆地和海洋的比例颠倒,那地球会是什么样子

    1. 概述 众所周知,地球上陆地的面积约占30%,海洋的面积约占70%.如果将地球商陆地与海洋的面积互换,也就是说陆地占70%,海洋占30%,那么地球上的环境也将与现在大相径庭,甚至也不会有人类存在. ...

  4. 海洋陆地算法_了解网络的陆地和海洋

    海洋陆地算法 Jeremy Keith has the rare ability to communicate web technologies with refreshing clarity: re ...

  5. 2023-05-13:你现在手里有一份大小为 n x n 的 网格 grid, 上面的每个 单元格 都用 0 和 1 标记好了其中 0 代表海洋,1 代表陆地。 请你找出一个海洋单元格,这个海洋单元格

    2023-05-13:你现在手里有一份大小为 n x n 的 网格 grid, 上面的每个 单元格 都用 0 和 1 标记好了其中 0 代表海洋,1 代表陆地. 请你找出一个海洋单元格,这个海洋单元格 ...

  6. MODIS(TerraAqua)陆地标准产品

    △MODIS L1B 标准产品总体介绍 MODIS-L1B 是MODIS 系列数据产品中的一种(与已经发布的 MODIS-land 产品并列),即经过仪器标定的 MODIS数据产品,产品编号为MOD0 ...

  7. 这 10 条河,「贡献」了全球 95% 的海洋塑料污染

    世界经济论坛在 2016 年发布的报告显示,每年全球有 800 万吨塑料流入海洋,相当于每分钟就有一卡车塑料被倒入海里. 直接受到塑料垃圾影响的沿海及海洋生物种类高达 800 多种,每年就会有 100 ...

  8. 新的里程碑,海洋元宇宙AQUANEE即将登陆Gate以及BitMart

    毫无疑问,以 NFT.GameFi.SocialFi 等概念引领的 Web3 赛道,是当下区块链领域中的热门赛道,而且 Web 3.0 也终将取代 Web2.0 而成为未来互联网趋势. 不但一些专注于 ...

  9. CESM气候模式简介与POP海洋分量

    一.CESM模式简介 地球系统模式为地球系统变化规律.认识人类活动与全球变化之间的相互作用研究,以及相应政策制定提供了不可或缺的定量依据,是上述研究的科学量化工具之一. 地球系统模式(Communit ...

最新文章

  1. Linux 初始root密码设置
  2. 2-Authentication Framework Chain of Trust
  3. VTK:网格之WindowedSincPolyDataFilter
  4. Jquery使用手册3--css操作 作者:choy
  5. 画毛毛虫代码计算机图形学,考试计算机图形学考试计算机图形学.docx
  6. 1-3-04:带余除法
  7. 1012 sed 基本命令(进行中)
  8. php写接口时应该用return还是echo返回数据
  9. Vue-JSON编辑器组件的简单使用
  10. 基于华为SMProxy开发cmpp2.0(跳坑版)
  11. 关于MAC解决jupyter中出现nbconvert failed/ xelatex not found on path报错
  12. qq远程听到计算机声音,QQ2017远程播放视频没有声音_软件应用_电脑知识学习_培训之家...
  13. iOS开发 关于YY_Model中,modelContainerPropertyGenericClass解析数组出现崩溃问题
  14. mysqlpump备份工具简单使用
  15. Visual Tracking Resources
  16. 怎么把本地rpm包导入linux,Linux在本地yum源中增加rpm包(示例代码)
  17. 练习打字速度效果很好的网站(本人亲测)
  18. 石墨笔记,幕布和 Effie 哪个更适合教师?
  19. nodejs的windows版本安装
  20. 【STM32】 直插晶振

热门文章

  1. 数学建模学习(71):营销组合模型
  2. 第十五周助教工作总结
  3. 怀念童年,推箱子小游戏(vue版本)
  4. 这个GitHub项目,5天狂揽2500星登顶GitHub热榜
  5. 适合女女生在家创业的兼职副业
  6. GitHub标星9,flutter实时刷新
  7. 【超全汇总】学习数据结构与算法,计算机基础知识,看这篇就够了【ZT帅地】2020-3-7
  8. luogu P2300 合并韩雨辰神犇
  9. 上传linux文件本地报错
  10. 【洛谷】U16580 奇怪的根式