#include "pch.h" #include using namespace std; const int N = 8; int p[N][N]; int zx[N][N]; int zy[N][N]; // p[i][j] ... vzdalenost // zx[i][j] ... cislo radky odkud jsme skocili na (i,j) // zy[i][j] ... cislo sloupce void umisti(int i, int j, int k, int i0, int j0) // skok z (i0, j0) na (i,j), k-ty skok { if ( i < N && i >= 0 && j >= 0 && j < N && (p[i][j] == -1 || p[i][j] > k )) { p[i][j] = k; zx[i][j] = i0; zy[i][j] = j0; umisti(i - 2, j - 1, k + 1, i, j); umisti(i - 2, j + 1, k + 1, i, j); umisti(i + 2, j - 1, k + 1, i, j); umisti(i + 2, j + 1, k + 1, i, j); umisti(i - 1, j - 2, k + 1, i, j); umisti(i - 1, j + 2, k + 1, i, j); umisti(i + 1, j - 2, k + 1, i, j); umisti(i + 1, j + 2, k + 1, i, j); } } void search0 (int i, int j) { while (i >= 0 && j >= 0) { cout << i << "," << j << " (" << p[i][j] << ")" << endl; int t = zx[i][j]; j = zy[i][j]; i = t; } } void search (int i, int j) { if (i >= 0 && j >= 0) { search(zx[i][j], zy[i][j]); cout << i << "," << j << " (" << p[i][j] << ")" << endl; } } int main() { for (int i = 0; i < N; i++) for (int k = 0; k < N; k++) { p[i][k] = -1; zx[i][k] = -1; zy[i][k] = -1; } umisti (0, 0, 0, -1, -1); for (int i = 0; i < N; i++) { for (int k = 0; k < N; k++) { if (p[i][k] == -1) cout << "."; else cout << p[i][k]; cout << " "; } cout << endl; } cout << "--------" << endl; search (N - 1, N - 1); cout << "O.K." << endl; }