Advertisement
Guest User

Untitled

a guest
Jun 30th, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.87 KB | None | 0 0
  1. public fun connectedComponentsCount() : Int
  2.     {
  3.         var res = 0
  4.         val colors = Array<IntArray>(imgWidth, { IntArray(imgHeight) })
  5.  
  6.         fun dfs(x : Int, y : Int, color : Int) {
  7.             val dx = array(0, 1, 0, -1)
  8.             var dy = array(1, 0, -1, 0)
  9.  
  10.             for (i in 0 .. 3) {
  11.                 val nx = x + dx[i]
  12.                 val ny = y + dy[i]
  13.                 if (nx in 0 .. imgWidth - 1 && ny in 0 .. imgHeight - 1 && !bitmap[nx][ny] && colors[nx][ny] == 0) {
  14.                     colors[nx][ny] = color
  15.                     dfs(nx, ny, color)
  16.                 }
  17.             }
  18.         }
  19.  
  20.         for (x in 0 .. imgWidth - 1) {
  21.             for (y in 0 .. imgHeight - 1) {
  22.                 if (!bitmap[x][y] && colors[x][y] == 0) {
  23.                     dfs(x, y, ++res)
  24.                 }
  25.             }
  26.         }
  27.  
  28.         return res
  29.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement