最大黑区域
来源:互联网 发布:数据分析师入门 编辑:程序博客网 时间:2024/04/29 12:10
FJNU.1337
Description
二值图像是由黑白两种像素组成的矩形点阵,图像识别的一个操作是求出图像中最大黑区域的面积。请设计一个程序完成二值图像的这个操作。黑区域由黑像素组成,一个黑区域中的每个像素至少与该区域中的另一个像素相邻,规定一个像素仅与其上、下、左、右的像素相邻。两个不同的黑区域没有相邻的像素。一个黑区域的面积是其所包含的像素的个数。
Input
输入由多个测试例组成。每个测试例的第一行含两个整数n和m , (1<=n, m<=100), 分别表示二值图像的行数与列数,后面紧跟着n行,每行含m个整数0或1,其中第i行表示图像的第i行的m个像素,0表示白像素,1表示黑像素。同一行的相邻两个整数之间用一个空格隔开,两个测试例之间用一个空行隔开,最后一个测试例之后隔一个空行,再接的一行含有两个整数0,标志输入的结束。
Output
每个测试例对应一行输出,含一个整数,表示相应的图像中最大黑区域的面积。
Sample Input
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
0 0
Sample Output
7
Source
福建师范大学第三届程序设计比赛网上预赛
My Program
#include<iostream>
#define N 1002
#define M 1002
using namespace std;
int map[N][M];
int search(int i,int j)
...{
int d=0;
map[i][j]=0;
if(map[i-1][j])
d+=search(i-1,j);
if(map[i][j-1])
d+=search(i,j-1);
if(map[i+1][j])
d+=search(i+1,j);
if(map[i][j+1])
d+=search(i,j+1);
return d+1;
}
int main()
...{
int m,n,i,j,t,max;
while(cin>>n>>m)
...{
if(n==0&&m==0)
break;
max=0;
for(i=0;i<=n;i++)
map[i][n+1]=map[i][0]=0;
for(j=0;j<=m;j++)
map[m+1][j]=map[0][j]=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>map[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(map[i][j])
...{
t=search(i,j);
if(t>max)
max=t;
}
cout<<max<<endl;
}
return 0;
}
#define N 1002
#define M 1002
using namespace std;
int map[N][M];
int search(int i,int j)
...{
int d=0;
map[i][j]=0;
if(map[i-1][j])
d+=search(i-1,j);
if(map[i][j-1])
d+=search(i,j-1);
if(map[i+1][j])
d+=search(i+1,j);
if(map[i][j+1])
d+=search(i,j+1);
return d+1;
}
int main()
...{
int m,n,i,j,t,max;
while(cin>>n>>m)
...{
if(n==0&&m==0)
break;
max=0;
for(i=0;i<=n;i++)
map[i][n+1]=map[i][0]=0;
for(j=0;j<=m;j++)
map[m+1][j]=map[0][j]=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>map[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(map[i][j])
...{
t=search(i,j);
if(t>max)
max=t;
}
cout<<max<<endl;
}
return 0;
}
YOYO's Note:
从第一个黑点开始深度遍历,把访问过的点都记成白点,一块区域访问完了与最大值比较,最后输出最大值。
主要是遍历函数,遍历上下左右点之后返回值的时候记得+1(算上自身)。
另外记成白点的原因,是为了避免重复访问。
- 最大黑区域
- 最大黑区域
- 1082最大黑区域
- poj1082-最大黑区域
- FZU_1082_最大黑区域
- 最大黑区域-DFS
- FZU 最大黑区域
- FZU1082-最大黑区域
- 最大黑区域
- 最大黑区域
- 最大黑区域-DFS
- fjnu 1337 最大黑区域
- FOJ 1082 最大黑区域
- Problem 1082 最大黑区域
- FZU 1082【最大黑区域】
- FZU 1082 最大黑区域
- FZU 1082最大黑区域【DFS】
- foj 1082 最大黑区域【dfs】
- Kurumi
- 非简体中文系统安装简体系统开发的软件
- AE PE CE的router设置关联问题
- jboss4.0.4 上配置虚拟主机步骤
- Easier Done Than Said?
- 最大黑区域
- Hay Points
- JAVA中自定义日志输出格式及自定义文件处理器的实现
- CTabCtrl 添加 tooltip方法
- 为什么2007年的图灵奖选择了模型检测技术
- 输入三个自然数
- 汉化软件,原来这么简单!
- 行编辑器
- 人流泪的电话号码!!