#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 startRow = 0;
int startCol = 0;
int currentRow = startRow;
int currentCol = startCol;
board[currentRow][currentCol] = 1;
int moveNumber;
for (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++) {
}
}
if (moveNumber > 64) {
int isClosed = 0;
for (int moveType = 0; moveType < 8; moveType++) {
if (currentRow + vertical[moveType] == startRow && currentCol + horizontal[moveType] == startCol) {
isClosed = 1;
break;
}
}
if (isClosed) {
printf("\nThis is a closed tour!\n"); } else {
printf("\nThis is a full tour, but not closed.\n"); }
} else {
printf("\nFull tour not achieved. Reached move %d.\n", moveNumber
- 1); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgOAoKaW50IG1haW4oKSB7CiAgICBpbnQgYm9hcmRbU0laRV1bU0laRV0gPSB7MH07CiAgICBpbnQgYWNjZXNzaWJpbGl0eVtTSVpFXVtTSVpFXSA9IHsKICAgICAgICB7MiwgMywgNCwgNCwgNCwgNCwgMywgMn0sCiAgICAgICAgezMsIDQsIDYsIDYsIDYsIDYsIDQsIDN9LAogICAgICAgIHs0LCA2LCA4LCA4LCA4LCA4LCA2LCA0fSwKICAgICAgICB7NCwgNiwgOCwgOCwgOCwgOCwgNiwgNH0sCiAgICAgICAgezQsIDYsIDgsIDgsIDgsIDgsIDYsIDR9LAogICAgICAgIHs0LCA2LCA4LCA4LCA4LCA4LCA2LCA0fSwKICAgICAgICB7MywgNCwgNiwgNiwgNiwgNiwgNCwgM30sCiAgICAgICAgezIsIDMsIDQsIDQsIDQsIDQsIDMsIDJ9CiAgICB9OwoKICAgIGludCBob3Jpem9udGFsWzhdID0gezIsIDEsIC0xLCAtMiwgLTIsIC0xLCAxLCAyfTsKICAgIGludCB2ZXJ0aWNhbFs4XSA9IHstMSwgLTIsIC0yLCAtMSwgMSwgMiwgMiwgMX07CgogICAgaW50IHN0YXJ0Um93ID0gMDsKICAgIGludCBzdGFydENvbCA9IDA7CiAgICBpbnQgY3VycmVudFJvdyA9IHN0YXJ0Um93OwogICAgaW50IGN1cnJlbnRDb2wgPSBzdGFydENvbDsKICAgIGJvYXJkW2N1cnJlbnRSb3ddW2N1cnJlbnRDb2xdID0gMTsKCiAgICBpbnQgbW92ZU51bWJlcjsKICAgIGZvciAobW92ZU51bWJlciA9IDI7IG1vdmVOdW1iZXIgPD0gNjQ7IG1vdmVOdW1iZXIrKykgewogICAgICAgIGludCBtaW5BY2Nlc3MgPSA5OwogICAgICAgIGludCBiZXN0TW92ZSA9IC0xOwogICAgICAgIGludCBuZXh0Um93ID0gLTE7CiAgICAgICAgaW50IG5leHRDb2wgPSAtMTsKCiAgICAgICAgZm9yIChpbnQgbW92ZVR5cGUgPSAwOyBtb3ZlVHlwZSA8IDg7IG1vdmVUeXBlKyspIHsKICAgICAgICAgICAgaW50IHRlc3RSb3cgPSBjdXJyZW50Um93ICsgdmVydGljYWxbbW92ZVR5cGVdOwogICAgICAgICAgICBpbnQgdGVzdENvbCA9IGN1cnJlbnRDb2wgKyBob3Jpem9udGFsW21vdmVUeXBlXTsKCiAgICAgICAgICAgIGlmICh0ZXN0Um93ID49IDAgJiYgdGVzdFJvdyA8IFNJWkUgJiYgdGVzdENvbCA+PSAwICYmIHRlc3RDb2wgPCBTSVpFKSB7CiAgICAgICAgICAgICAgICBpZiAoYm9hcmRbdGVzdFJvd11bdGVzdENvbF0gPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGlmIChhY2Nlc3NpYmlsaXR5W3Rlc3RSb3ddW3Rlc3RDb2xdIDwgbWluQWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkFjY2VzcyA9IGFjY2Vzc2liaWxpdHlbdGVzdFJvd11bdGVzdENvbF07CiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNb3ZlID0gbW92ZVR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRSb3cgPSB0ZXN0Um93OwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q29sID0gdGVzdENvbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChiZXN0TW92ZSAhPSAtMSkgewogICAgICAgICAgICBjdXJyZW50Um93ID0gbmV4dFJvdzsKICAgICAgICAgICAgY3VycmVudENvbCA9IG5leHRDb2w7CiAgICAgICAgICAgIGJvYXJkW2N1cnJlbnRSb3ddW2N1cnJlbnRDb2xdID0gbW92ZU51bWJlcjsKCiAgICAgICAgICAgIGZvciAoaW50IG1vdmVUeXBlID0gMDsgbW92ZVR5cGUgPCA4OyBtb3ZlVHlwZSsrKSB7CiAgICAgICAgICAgICAgICBpbnQgdGVzdFJvdyA9IGN1cnJlbnRSb3cgKyB2ZXJ0aWNhbFttb3ZlVHlwZV07CiAgICAgICAgICAgICAgICBpbnQgdGVzdENvbCA9IGN1cnJlbnRDb2wgKyBob3Jpem9udGFsW21vdmVUeXBlXTsKICAgICAgICAgICAgICAgIGlmICh0ZXN0Um93ID49IDAgJiYgdGVzdFJvdyA8IFNJWkUgJiYgdGVzdENvbCA+PSAwICYmIHRlc3RDb2wgPCBTSVpFKSB7CiAgICAgICAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0eVt0ZXN0Um93XVt0ZXN0Q29sXS0tOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaW50IHIgPSAwOyByIDwgU0laRTsgcisrKSB7CiAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBTSVpFOyBjKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIlMmQgIiwgYm9hcmRbcl1bY10pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9CgogICAgaWYgKG1vdmVOdW1iZXIgPiA2NCkgewogICAgICAgIGludCBpc0Nsb3NlZCA9IDA7CiAgICAgICAgZm9yIChpbnQgbW92ZVR5cGUgPSAwOyBtb3ZlVHlwZSA8IDg7IG1vdmVUeXBlKyspIHsKICAgICAgICAgICAgaWYgKGN1cnJlbnRSb3cgKyB2ZXJ0aWNhbFttb3ZlVHlwZV0gPT0gc3RhcnRSb3cgJiYgY3VycmVudENvbCArIGhvcml6b250YWxbbW92ZVR5cGVdID09IHN0YXJ0Q29sKSB7CiAgICAgICAgICAgICAgICBpc0Nsb3NlZCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoaXNDbG9zZWQpIHsKICAgICAgICAgICAgcHJpbnRmKCJcblRoaXMgaXMgYSBjbG9zZWQgdG91ciFcbiIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHByaW50ZigiXG5UaGlzIGlzIGEgZnVsbCB0b3VyLCBidXQgbm90IGNsb3NlZC5cbiIpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgcHJpbnRmKCJcbkZ1bGwgdG91ciBub3QgYWNoaWV2ZWQuIFJlYWNoZWQgbW92ZSAlZC5cbiIsIG1vdmVOdW1iZXIgLSAxKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==