public class FifteenPuzzle {
//---------------------------------------------------
public static boolean solvable15Puzzle(int[][] b) {
int[] a = new int[(b.length*b[0].length)-1];
int k = 0;
int p = 0;
for (int i = 0; i <= b.length-1; i++) {
for (int j = 0; j <= b[0].length - 1; j++) {
if (b[i][j] != 0) {
a[k] = b[i][j];
k++;
} else {
p = i+1;
}
}
}
int l = 0;
for (int n = 0; n <= a.length-2; n++) {
for (int m = n + 1; m <= a.length - 1; m++) {
if (a[n] > a[m]) {
l++;
}
}
}
if ((l + p) % 2 == 1) {
return false;
}else{
return true;
}
}
//---------------------------------------------------
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));
}
}
|
SM=0, CM=5, ST=6, KY=521, TR=60:00
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
|