首页 新闻 搜索 专区 学院

问一道算法题

0
[已解决问题] 解决于 2013-08-26 20:30

黑白显示器只能显示白色和黑色的像素点,显示器上随即显示一副图画(黑白色),请写出一个算法。要求统计出这幅图画中有多少个独立的黑色色块(一个单独的被白色包围的黑色像素也叫一个色块,多个黑色像素点组成的图案也叫一个色块)

 

求大概的思路

sdnd2000的主页 sdnd2000 | 初学一级 | 园豆:189
提问于:2013-08-26 16:23
< >
分享
最佳答案
0

  我想到一个方法。但首先要明确是8连通(上下左右,左上、左下、右上、右下)还是4连通(上下左右),不过这个不是核心问题。

  分成两步(1.搜索黑色色块数 2.搜索白色色块数),每一步中利用DFS递归方法。

  例如搜索黑色色块时,首先找到一块黑色色块,标记状态,然后判断它的8个方向是否是黑色的,如果是黑色的且没有被标记,递归搜索这个色块,如果是白色,不管(也就是让递归函数自动退出)。求解DFS进行的次数,即为黑色色块的个数。注意,此时,所有的黑色色块已经被标记。

  再同样的方法搜索白色的色块。

  基本思想是利用DFS递归求解,楼主可以查查这方面的知识,如果还不懂的话,我最近做了一个类似的ACM,可以上代码。

奖励园豆:5
viczzx | 菜鸟二级 |园豆:211 | 2013-08-26 16:43

ACM是啥呀

sdnd2000 | 园豆:189 (初学一级) | 2013-08-26 16:47

@sdnd2000: 简单讲是编程题。详细请google。

viczzx | 园豆:211 (菜鸟二级) | 2013-08-26 17:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册