class GfG {
// this program takes in two 2D arrays as
// input and compares them to find out the
// minimum number of changes that needs to
// be made to convert arr to ms.
public static int findMinimumFromMS(int[][] arr,
int[][] ms)
{
int count = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (arr[i][j] != ms[i][j])
count++;
}
}
return count;
}
public static int findMinimum(int[][] arr)
{
int[][][] ms = {
{ { 8, 1, 6 }, { 3, 5, 7 }, { 4, 9, 2 } },
{ { 6, 1, 8 }, { 7, 5, 3 }, { 2, 9, 4 } },
{ { 4, 9, 2 }, { 3, 5, 7 }, { 8, 1, 6 } },
{ { 2, 9, 4 }, { 7, 5, 3 }, { 6, 1, 8 } },
{ { 8, 3, 4 }, { 1, 5, 9 }, { 6, 7, 2 } },
{ { 4, 3, 8 }, { 9, 5, 1 }, { 2, 7, 6 } },
{ { 6, 7, 2 }, { 1, 5, 9 }, { 8, 3, 4 } },
{ { 2, 7, 6 }, { 9, 5, 1 }, { 4, 3, 8 } },
};
// If all the elements need to be changed,
// there would be 9 changes, so we take the
// max as 9
int min = 9;
for (int i = 0; i < 8; i++) {
int x = findMinimumFromMS(arr, ms[i]);
if (x < min)
min = x;
}
return min;
}
public static void main
(String[] args
) {
int[][] arr = { { 4,8,2 }, { 4,5,7},
{ 6,1,6 } };
System.
out.
println(findMinimum
(arr
)); }
}
Y2xhc3MgR2ZHIHsKIAogICAgLy8gdGhpcyBwcm9ncmFtIHRha2VzIGluIHR3byAyRCBhcnJheXMgYXMKICAgIC8vIGlucHV0IGFuZCBjb21wYXJlcyB0aGVtIHRvIGZpbmQgb3V0IHRoZQogICAgLy8gbWluaW11bSBudW1iZXIgb2YgY2hhbmdlcyB0aGF0IG5lZWRzIHRvCiAgICAvLyBiZSBtYWRlIHRvIGNvbnZlcnQgYXJyIHRvIG1zLgogICAgcHVibGljIHN0YXRpYyBpbnQgZmluZE1pbmltdW1Gcm9tTVMoaW50W11bXSBhcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXVtdIG1zKQogICAgewogICAgICAgIGludCBjb3VudCA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAzOyBqKyspIHsKICAgICAgICAgICAgICAgIGlmIChhcnJbaV1bal0gIT0gbXNbaV1bal0pCiAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gY291bnQ7CiAgICB9CiAKICAgIHB1YmxpYyBzdGF0aWMgaW50IGZpbmRNaW5pbXVtKGludFtdW10gYXJyKQogICAgewogICAgICAgIGludFtdW11bXSBtcyA9IHsKICAgICAgICAgICAgeyB7IDgsIDEsIDYgfSwgeyAzLCA1LCA3IH0sIHsgNCwgOSwgMiB9IH0sCiAgICAgICAgICAgIHsgeyA2LCAxLCA4IH0sIHsgNywgNSwgMyB9LCB7IDIsIDksIDQgfSB9LAogICAgICAgICAgICB7IHsgNCwgOSwgMiB9LCB7IDMsIDUsIDcgfSwgeyA4LCAxLCA2IH0gfSwKICAgICAgICAgICAgeyB7IDIsIDksIDQgfSwgeyA3LCA1LCAzIH0sIHsgNiwgMSwgOCB9IH0sCiAgICAgICAgICAgIHsgeyA4LCAzLCA0IH0sIHsgMSwgNSwgOSB9LCB7IDYsIDcsIDIgfSB9LAogICAgICAgICAgICB7IHsgNCwgMywgOCB9LCB7IDksIDUsIDEgfSwgeyAyLCA3LCA2IH0gfSwKICAgICAgICAgICAgeyB7IDYsIDcsIDIgfSwgeyAxLCA1LCA5IH0sIHsgOCwgMywgNCB9IH0sCiAgICAgICAgICAgIHsgeyAyLCA3LCA2IH0sIHsgOSwgNSwgMSB9LCB7IDQsIDMsIDggfSB9LAogICAgICAgIH07CiAKICAgICAgICAvLyBJZiBhbGwgdGhlIGVsZW1lbnRzIG5lZWQgdG8gYmUgY2hhbmdlZCwKICAgICAgICAvLyB0aGVyZSB3b3VsZCBiZSA5IGNoYW5nZXMsIHNvIHdlIHRha2UgdGhlCiAgICAgICAgLy8gbWF4IGFzIDkKICAgICAgICBpbnQgbWluID0gOTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7IGkrKykgewogICAgICAgICAgICBpbnQgeCA9IGZpbmRNaW5pbXVtRnJvbU1TKGFyciwgbXNbaV0pOwogICAgICAgICAgICBpZiAoeCA8IG1pbikKICAgICAgICAgICAgICAgIG1pbiA9IHg7CiAgICAgICAgfQogICAgICAgIHJldHVybiBtaW47CiAgICB9CiAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgaW50W11bXSBhcnIgPSB7IHsgNCw4LDIgfSwgeyA0LDUsN30sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyA2LDEsNiB9IH07CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGZpbmRNaW5pbXVtKGFycikpOwogICAgfQp9