题目描述

二值图像是由黑白两种像素组成的矩形点阵,图像识别的一个操作是求出图像中最大黑区域的面积。请设计一个程序完成二值图像的这个操作。黑区域由黑像素组成,一个黑区域中的每像素至少与该区域中的另一像素相邻,规定一个像素仅与其上、下、左、右的像素相邻。两个不同的黑区域没有相邻的像素。一个黑区域的面积是其所包含的像素数。

输入

第 1 行含两个正整数 n 和 m,1≤n、m≤100,分别表示二值图像的行数与列数,后面紧跟着n 行,每行含 m 个整数 0 或 1,其中第 i 行表示图像的第 i 行的 m 个像素,0 表示白像素,1 表示黑像素。

输出

输出一个数,表示相应的图像中最大黑区域的面积。

样例输入

5 6
0 1 1 0 0 1
1 1 0 1 0 1
0 1 0 0 1 0
0 0 0 1 1 1
1 0 1 1 1 0

样例输出

7

循环,若此元素未被标记则进行搜索,每搜到一个标记一下,并将计数器++,最后输出

代码:

#include <bits/stdc++.h>
using namespace std;
char a[101][101];
int sum, ans, n, m;void dg(int x, int y)
{if (a[x][y] == '1'){a[x][y] = '0';sum++;}if (a[x + 1][y] == '1')dg(x + 1, y);if (a[x - 1][y] == '1')dg(x - 1, y);if (a[x][y + 1] == '1')dg(x, y + 1);if (a[x][y - 1] == '1')dg(x, y - 1);
}main()
{freopen("area.in","r",stdin);freopen("area.out","w",stdout);scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> a[i][j];}}for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (a[i][j] == '1'){sum = 0;dg(i, j);ans = max(sum, ans);}}}printf("%d", ans);return 0;
}

【信息学奥赛课课通】最大黑区域相关推荐

  1. 【信息学奥赛课课通】 瓷砖

    本题目源于<信息学奥赛课课通> 原题链接 洛谷也有改版的题目 题目描述 在一个 w×hw×hw×h 的矩形广场上,每一块 1×11×11×1 的地面都铺设了红色或黑色的瓷砖.小林同学站在某 ...

  2. 信息学奥赛课课通VS中学生计算机,数学奥赛VS信息学奥赛 孩子们该如何选择

    同是奥赛,为什么越来越多的孩子选了信息学? 今年3月,教育部正式发布通知:全面取消中学奥赛等5项全国性高考加分项目.这个消息对很多有志于让孩子"走捷径"的家长而言,可谓晴空霹雳,升 ...

  3. noip c语言算法教学视频,信息学奥赛课课通(C++)课程视频课程课件与代码

    全国青少年信息学奥林匹克联赛(NOIP)和全国青少年信息学奥林匹克竞赛(NOI)是最受各级各类学校重视.最受青少年学生欢迎的计算机编程类竞赛活动.本书以"编写程序的需求"为主线,循 ...

  4. 【信息学奥赛课课通】分身数对

    题目描述: 给出 n 个不同的正整数 a[1] ~ a[n],它们的值在 1~1000000 之间.再给定一个整数 x,编程计算这样的数对个数(a[i],a[j]),1≤i<j≤n 并且 a[i ...

  5. C++谁在正中间(信息学奥赛课课通)

    题目描述 输入一串数,输出排列后最中间的数 输入样例 5 2 4 1 3 5 输出样例 3 简单排序即可 CODE #include<iostream> #include<algor ...

  6. 信息学奥赛 课课通(c++)p1-3-1

    #include<iostream> using namespace std; int main(){const float pi = 3.14159;double r,l,s;cin & ...

  7. 《信息学奥赛课课通》图床

  8. 信息奥赛课课通(C++)p164-1质数个数

    问题描述: 农夫约翰想从正整数A-B之间,选择一些素数来作为奶牛的编号,作为编号的数各位上的数字至少有一个特定的数字D,如A为11.B为15,D为3时,则A-B之间有11.13两个素数,但组成11的两 ...

  9. 信息奥赛课课通p155-2统计数字

    2 3 #include<iostream> using namespace std; int main() {int a[10001],n,i,t,j,count=1;cin>&g ...

最新文章

  1. 记录一下LabelImg实际绘制框颜色的位置
  2. 项目G2SVG.text转换
  3. Java BigDecimal plus()方法与示例
  4. 不出来信号 quartus_男人一旦动了真情,会向你发出这6个“信号”不爱的人装不出来...
  5. java https安全传输
  6. 【Python】绘制哆啦A梦
  7. JAVA中日期格式SimpleDateFormat
  8. springboot 读写分离_springboot +ShardingJDBC 读写分离
  9. Java基础知识学习06-封装、继承
  10. Java8中检查字符串在数组中是否存在
  11. 谁蹭了我的WiFi?浅谈家用无线路由器攻防
  12. python调用默认播放器_在PotPlayer和MPV挂载SVP脚本进行补帧的部署方法
  13. Silvaco TCAD安装包相关问题
  14. 61. 请简述self在类中的意义?
  15. 云端敏捷部署单节点MySQl与Redis服务(以Ubuntu为例)
  16. 连接tcp服务器出现的问题及解决方法
  17. 分布式 - ElasticSearch解决大数据量检索难题
  18. mysql中声明数组_SQL数据库中怎么定义数组
  19. Direct3DCreate9与Direct3DCreate9Ex
  20. 细读《深入理解 Android 内核设计思想》(三)Binder 机制 [上]

热门文章

  1. 自行车维护大全(zz)
  2. 手把手教你做一个最最最简单的爱心飘落动画
  3. 875. 爱吃香蕉的珂珂
  4. 修改Typora字体,Typora页面美化
  5. iMovie实战及技能
  6. Arch Linux 安装 gnome 桌面环境
  7. 滕王阁序作者是谁?分享滕王阁序名句摘抄
  8. android 微信小视频无法播放器,安卓video组件无法播放视频
  9. java异步线程_java异步线程
  10. python批量操作word文档实战_python批量实现Word文件转换为PDF文件