public class FifteenPuzzle {
//---------------------------------------------------
public static boolean solvable15Puzzle(int[][] b) {
int k =0; int L=0; int B=0;
int d[] = new int[16];
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
d[k] = b[i][j]; k++;
if (b[i][j] == 0) { B = i + 1; }
}
}
for (int n = 0; n < (d.length - 1); n++) {
for (int m = n + 1; m < d.length; m++) {
if (d[n] > d[m] && d[m] != 0) { L++; }
}
}
if ((L + B) % 2 == 0) { return true; }
else {return false;}
}
//---------------------------------------------------
public static void main(String[] a) {
int[][] ok = { { 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 12, 15 },
{ 13, 14, 11, 0 } };
int[][] nok = { { 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 15, 14, 0 } };
System.out.println(solvable15Puzzle(ok));
System.out.println(solvable15Puzzle(nok));
}
}
|