evie
BAN USERprivate static int N = 35;
private static int M = 18;
private static String DATA =
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000"+
"0000000000000000000X000000000000000"+
"000000000000000000XXX00000000000000"+
"000XX000000000000000000000000000000"+
"000XXXX0000000000000000000000000000"+
"0000000X000000000000000000000000000"+
"00000000000000000000000000000000000"+
"000000000000000000000X0000000000000"+
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000"+
"00000000000000000000000000000000000";
public static HashSet<Integer> positions = new HashSet<Integer>();
public static void visitIsland(int index)
{
if (positions.remove(new Integer(index)))
{
int xPos = index % N;
if (xPos > 0) visitIsland(index - 1);
if (xPos < N - 1) visitIsland(index + 1);
if (index >= N) visitIsland(index - N);
if (index < N*M - N) visitIsland(index + N);
}
}
public static void main(String[] args) {
for (int i = 0; i < N*M; i++)
{
if (DATA.charAt(i) == 'X')
{
positions.add(new Integer(i));
}
}
int islandCount = 0;
while (positions.size() > 0)
{
visitIsland(positions.iterator().next().intValue());
islandCount++;
}
System.out.println("Total islands: " + Integer.toString(islandCount));
}
- evie September 21, 2015