Qualcosa di interessante accade quando chiediamo "Cosa succede se torniamo indietro?".
Quindi vogliamo andare da A (i + j, j) - > A (i, j) per andare a sinistra e A (i, i + j) - > A (i, j) per salire. Dal momento che le cose potrebbero diventare confuse se continuassi ad usare i e j, userò x e y, e dirò che stiamo andando indietro da A (x, y) se stiamo andando a sinistra o in alto.
Riceviamo queste formule:
Left: A(x, y) -> A(x-y, y)
Up: A(x, y) -> A(x, y-x)
Prima cosa da notare: se x = y, allora otteniamo una coordinata 0 in entrambe le formule, quindi sappiamo che qualsiasi cosa sulla diagonale che non è il nostro punto di partenza è irraggiungibile.
Seconda cosa da notare: abbiamo x-y in una formula e y-x nell'altra. Poiché xey sono sempre positivi, almeno una delle due possibili posizioni da cui potremmo provenire è impossibile .
Ciò significa che possiamo calcolare esattamente da quale quadrato veniamo, a meno che il quadrato non sia raggiungibile, nel qual caso si tratta di un quadrato diagonale o di un quadrato diagonale. Tornando indietro da un quadrato raggiungibile, otteniamo il percorso solo , che deve essere il percorso con la lunghezza minore.
Quanto segue è la mia soluzione al problema originariamente presentato:
C'è un solo modo in cui j può cambiare e quando lo fa, aumenta di 1 perché il robot si sposta a destra. Sappiamo che è iniziato all'1 e si è concluso a n, quindi sappiamo quanti passi ci sono voluti a destra.
La stessa cosa con me e i passi verso il basso.
Quale percorso è irrilevante.