图像分割 DFS

图像分割
Time Limit:1000MS Memory Limit:65535K
题型: 编程题 语言: 无限制
描述
给定一个n行m列的二值图像,0为背景,1为前景物,请计算该图像中有多少块连续区域(由连接的1构成),并输出
最大的连续区域像点数。
判断两个区域是否连接采用四邻域判定,即一点仅与它的上下左右四个点相连。

输入格式
第一行两个正整数,n和m(n,m<=100)
此后n行,每行m个0或1
输出格式
输入连续区域数和最大连续区域像点数
输入样例
6 8
01111110
01000010
01011010
01000010
01111110
00000001
输出样例
3
18
思路:十分经典的题目,dfs跑一下就行了,注意边缘。
AC代码:

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
char a[110][110];
int visit[110][110],n,m,roomnum,Maxroomarea,roomarea;
void dfs(int i,int j)
{
    if(i<0||i>=n||j<0||j>=m)return;
    if(visit[i][j]||a[i][j]=='0')return;
    visit[i][j]=1;
    roomarea++;
    dfs(i+1,j);
    dfs(i-1,j);
    dfs(i,j+1);
    dfs(i,j-1);
}
int main()
{
    Maxroomarea=-1;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(!visit[i][j]&&a[i][j]=='1'){
                roomarea=0;
                roomnum++;
                dfs(i,j);
                Maxroomarea=max(Maxroomarea,roomarea);
            }
        }
    }
    cout<<roomnum<<endl<<Maxroomarea<<endl;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小游戏辅助器MATLAB图像处理DFS-重邮小帮手-夸父追日辅助器.rar 本帖最后由 caicaibi 于 2018-7-20 11:50 编辑 1.游戏介绍 1.游戏来源                                 2.游戏界面                                 3.游戏规则                                 4.辅助器结果                                 2.缘由 读书的时候,学校把这游戏上线,弄了一个游戏比赛,前20名好像都有物品奖励。LZ由于手残,拿不到好名次,所以就想方设法破解这个游戏,分析游戏规则,自己做了这个辅助器(MATLAB图像处理 DFS算法 模拟鼠标点击),弄好后,将排行榜全部刷了我的名字,然后。 。 。 。 然后就去赛方道歉了 。 。 。 再然后,比赛完了,这游戏下线了。。。 。 。 。 现在,无意翻到这游戏又上线了,又想起了这个辅助器,发个帖子,留个纪念。 对了,这个游戏之后,出了‘跳一跳‘’,‘跳一跳’辅助器(图像处理 距离时间换算 模拟鼠标点击)与这个差不多,没想到我还走到前沿,嘿嘿! 3.游戏分析及源码 流程概要: 1.模拟鼠标点击->截屏->检测圆的个数->得到标准模板 2.将图片矩阵变为[-1 0 1]矩阵 3.使用DFS求出一笔路径 4.将结果转变为鼠标点击 详细分析见docx: 注意:屏幕分辨率为:1366*768,需要将PC微信的游戏界面置顶层,并全屏显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值