#include <stdio.h>
#define SIZE 8
int main() {
int board[SIZE][SIZE] = {0};
int accessibility[SIZE][SIZE] = {
{2, 3, 4, 4, 4, 4, 3, 2},
{3, 4, 6, 6, 6, 6, 4, 3},
{4, 6, 8, 8, 8, 8, 6, 4},
{4, 6, 8, 8, 8, 8, 6, 4},
{4, 6, 8, 8, 8, 8, 6, 4},
{4, 6, 8, 8, 8, 8, 6, 4},
{3, 4, 6, 6, 6, 6, 4, 3},
{2, 3, 4, 4, 4, 4, 3, 2}
};
int horizontal[8] = {2, 1, -1, -2, -2, -1, 1, 2};
int vertical[8] = {-1, -2, -2, -1, 1, 2, 2, 1};
int currentRow = 0;
int currentCol = 0;
board[currentRow][currentCol] = 1;
for (int moveNumber = 2; moveNumber <= 64; moveNumber++) {
int minAccess = 9;
int bestMove = -1;
int nextRow = -1;
int nextCol = -1;
for (int moveType = 0; moveType < 8; moveType++) {
int testRow = currentRow + vertical[moveType];
int testCol = currentCol + horizontal[moveType];
if (testRow >= 0 && testRow < SIZE && testCol >= 0 && testCol < SIZE) {
if (board[testRow][testCol] == 0) {
if (accessibility[testRow][testCol] < minAccess) {
minAccess = accessibility[testRow][testCol];
bestMove = moveType;
nextRow = testRow;
nextCol = testCol;
}
}
}
}
if (bestMove != -1) {
currentRow = nextRow;
currentCol = nextCol;
board[currentRow][currentCol] = moveNumber;
for (int moveType = 0; moveType < 8; moveType++) {
int testRow = currentRow + vertical[moveType];
int testCol = currentCol + horizontal[moveType];
if (testRow >= 0 && testRow < SIZE && testCol >= 0 && testCol < SIZE) {
accessibility[testRow][testCol]--;
}
}
} else {
break;
}
}
for (int r = 0; r < SIZE; r++) {
for (int c = 0; c < SIZE; c++) {
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgOAoKaW50IG1haW4oKSB7CiAgICBpbnQgYm9hcmRbU0laRV1bU0laRV0gPSB7MH07CiAgICBpbnQgYWNjZXNzaWJpbGl0eVtTSVpFXVtTSVpFXSA9IHsKICAgICAgICB7MiwgMywgNCwgNCwgNCwgNCwgMywgMn0sCiAgICAgICAgezMsIDQsIDYsIDYsIDYsIDYsIDQsIDN9LAogICAgICAgIHs0LCA2LCA4LCA4LCA4LCA4LCA2LCA0fSwKICAgICAgICB7NCwgNiwgOCwgOCwgOCwgOCwgNiwgNH0sCiAgICAgICAgezQsIDYsIDgsIDgsIDgsIDgsIDYsIDR9LAogICAgICAgIHs0LCA2LCA4LCA4LCA4LCA4LCA2LCA0fSwKICAgICAgICB7MywgNCwgNiwgNiwgNiwgNiwgNCwgM30sCiAgICAgICAgezIsIDMsIDQsIDQsIDQsIDQsIDMsIDJ9CiAgICB9OwoKICAgIGludCBob3Jpem9udGFsWzhdID0gezIsIDEsIC0xLCAtMiwgLTIsIC0xLCAxLCAyfTsKICAgIGludCB2ZXJ0aWNhbFs4XSA9IHstMSwgLTIsIC0yLCAtMSwgMSwgMiwgMiwgMX07CgogICAgaW50IGN1cnJlbnRSb3cgPSAwOwogICAgaW50IGN1cnJlbnRDb2wgPSAwOwogICAgYm9hcmRbY3VycmVudFJvd11bY3VycmVudENvbF0gPSAxOwoKICAgIGZvciAoaW50IG1vdmVOdW1iZXIgPSAyOyBtb3ZlTnVtYmVyIDw9IDY0OyBtb3ZlTnVtYmVyKyspIHsKICAgICAgICBpbnQgbWluQWNjZXNzID0gOTsKICAgICAgICBpbnQgYmVzdE1vdmUgPSAtMTsKICAgICAgICBpbnQgbmV4dFJvdyA9IC0xOwogICAgICAgIGludCBuZXh0Q29sID0gLTE7CgogICAgICAgIGZvciAoaW50IG1vdmVUeXBlID0gMDsgbW92ZVR5cGUgPCA4OyBtb3ZlVHlwZSsrKSB7CiAgICAgICAgICAgIGludCB0ZXN0Um93ID0gY3VycmVudFJvdyArIHZlcnRpY2FsW21vdmVUeXBlXTsKICAgICAgICAgICAgaW50IHRlc3RDb2wgPSBjdXJyZW50Q29sICsgaG9yaXpvbnRhbFttb3ZlVHlwZV07CgogICAgICAgICAgICBpZiAodGVzdFJvdyA+PSAwICYmIHRlc3RSb3cgPCBTSVpFICYmIHRlc3RDb2wgPj0gMCAmJiB0ZXN0Q29sIDwgU0laRSkgewogICAgICAgICAgICAgICAgaWYgKGJvYXJkW3Rlc3RSb3ddW3Rlc3RDb2xdID09IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXNzaWJpbGl0eVt0ZXN0Um93XVt0ZXN0Q29sXSA8IG1pbkFjY2VzcykgewogICAgICAgICAgICAgICAgICAgICAgICBtaW5BY2Nlc3MgPSBhY2Nlc3NpYmlsaXR5W3Rlc3RSb3ddW3Rlc3RDb2xdOwogICAgICAgICAgICAgICAgICAgICAgICBiZXN0TW92ZSA9IG1vdmVUeXBlOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0Um93ID0gdGVzdFJvdzsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dENvbCA9IHRlc3RDb2w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoYmVzdE1vdmUgIT0gLTEpIHsKICAgICAgICAgICAgY3VycmVudFJvdyA9IG5leHRSb3c7CiAgICAgICAgICAgIGN1cnJlbnRDb2wgPSBuZXh0Q29sOwogICAgICAgICAgICBib2FyZFtjdXJyZW50Um93XVtjdXJyZW50Q29sXSA9IG1vdmVOdW1iZXI7CgogICAgICAgICAgICBmb3IgKGludCBtb3ZlVHlwZSA9IDA7IG1vdmVUeXBlIDwgODsgbW92ZVR5cGUrKykgewogICAgICAgICAgICAgICAgaW50IHRlc3RSb3cgPSBjdXJyZW50Um93ICsgdmVydGljYWxbbW92ZVR5cGVdOwogICAgICAgICAgICAgICAgaW50IHRlc3RDb2wgPSBjdXJyZW50Q29sICsgaG9yaXpvbnRhbFttb3ZlVHlwZV07CiAgICAgICAgICAgICAgICBpZiAodGVzdFJvdyA+PSAwICYmIHRlc3RSb3cgPCBTSVpFICYmIHRlc3RDb2wgPj0gMCAmJiB0ZXN0Q29sIDwgU0laRSkgewogICAgICAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHlbdGVzdFJvd11bdGVzdENvbF0tLTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKGludCByID0gMDsgciA8IFNJWkU7IHIrKykgewogICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgU0laRTsgYysrKSB7CiAgICAgICAgICAgIHByaW50ZigiJTJkICIsIGJvYXJkW3JdW2NdKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9