黑白显示器只能显示白色和黑色的像素点,显示器上随即显示一副图画(黑白色),请写出一个算法。要求统计出这幅图画中有多少个独立的黑色色块(一个单独的被白色包围的黑色像素也叫一个色块,多个黑色像素点组成的图案也叫一个色块)
求大概的思路
我想到一个方法。但首先要明确是8连通(上下左右,左上、左下、右上、右下)还是4连通(上下左右),不过这个不是核心问题。
分成两步(1.搜索黑色色块数 2.搜索白色色块数),每一步中利用DFS递归方法。
例如搜索黑色色块时,首先找到一块黑色色块,标记状态,然后判断它的8个方向是否是黑色的,如果是黑色的且没有被标记,递归搜索这个色块,如果是白色,不管(也就是让递归函数自动退出)。求解DFS进行的次数,即为黑色色块的个数。注意,此时,所有的黑色色块已经被标记。
再同样的方法搜索白色的色块。
基本思想是利用DFS递归求解,楼主可以查查这方面的知识,如果还不懂的话,我最近做了一个类似的ACM,可以上代码。
ACM是啥呀
@sdnd2000: 简单讲是编程题。详细请google。