paquete test2; FindIslands de clase pública { public static void main (String [] args) { int [] [] mx = { {0,0,0,0,0}, {0,1,1,1,0}, {0,1,0,1,0}, {0,1,1,1,0}, {0,0,0,0,0}, {1,0,0,0,0} }; int total = 0; for (int i = 0; i <mx.length; i ++) { para (int j = 0; j <mx [i] .length; j ++) { if (mx [i] [j] == 1) { total ++; findIslands (mx, i, j); } } } System.out.print ("El número total de islas es" + total); } findIslands vacío estático (int [] [] mx, int x, int y) { tratar { if (mx [x] [y] == 1) { mx [x] [y] = 0; findIslands (mx, x + 1, y); findIslands (mx, x, y + 1); findIslands (mx, x - 1, y); findIslands (mx, x, y - 1); findIslands (mx, x + 1, y + 1); findIslands (mx, x - 1, y - 1); findIslands (mx, x + 1, y - 1); findIslands (mx, x - 1, y + 1); } } catch (ArrayIndexOutOfBoundsException e) { } }
La solución podría mejorarse mucho más en complejidad de espacio y tiempo mediante el uso de algunas técnicas de memorización u otras, pero por ahora esta es la versión recursiva ingenua en Java.