Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public fun connectedComponentsCount() : Int
- {
- var res = 0
- val colors = Array<IntArray>(imgWidth, { IntArray(imgHeight) })
- fun dfs(x : Int, y : Int, color : Int) {
- val dx = array(0, 1, 0, -1)
- var dy = array(1, 0, -1, 0)
- for (i in 0 .. 3) {
- val nx = x + dx[i]
- val ny = y + dy[i]
- if (nx in 0 .. imgWidth - 1 && ny in 0 .. imgHeight - 1 && !bitmap[nx][ny] && colors[nx][ny] == 0) {
- colors[nx][ny] = color
- dfs(nx, ny, color)
- }
- }
- }
- for (x in 0 .. imgWidth - 1) {
- for (y in 0 .. imgHeight - 1) {
- if (!bitmap[x][y] && colors[x][y] == 0) {
- dfs(x, y, ++res)
- }
- }
- }
- return res
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement