#include "pch.h"
#include <iostream>
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; 
}
 
kun_2019_ut.txt · Last modified: 2019/04/02 11:10 by 147.32.8.110
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki