Ho imparato gli algoritmi e sto cercando di risolvere i problemi e ora ho il seguente problema:
In una matrice 4x4 e contiene campi con altezza. C'è un campo di inizio con una data altezza anche l'altezza massima che può avere un campo. Per poter passare da un campo all'altro, l'altezza del campo corrente deve essere maggiore o uguale al campo che vogliamo percorrere.
Ci sono anche campi non contrassegnati senza altezza assegnata a loro, il che significa che possiamo cambiarlo.
L'obiettivo è attraversare tutti i campi con una determinata altezza modificando l'altezza dei campi non marcati ?
. Perché una soluzione conti come valida, tutto il dato ?
deve avere un'altezza assegnata.
Penso che questo richiederà la bruta forzatura di tutte le combinazioni possibili dei campi ?
.
Esempio:
2 2
xx*x
x1?1
x?1x
xxxx
L'altezza minima che può avere un campo è 0.
La prima cifra rappresenta l'altezza del *
e il secondo, l'altezza massima che può avere un campo. Quindi *
rappresenta il punto iniziale e ha altezza 2 (in questo caso abbiamo 2 come altezza massima), da lì dobbiamo passare agli altri campi con i numeri, cambiando il valore dei campi ?
. Dobbiamo trovare quante varianti sono valide.
In questo caso ci sono: 6. Poiché ?
sulla 3a riga non ha importanza se viene attraversato o meno, ecco le soluzioni:
xx*x xx*x xx*x xx*x xx*x xx*x
x121 x121 x121 x111 x111 x111
x21x x11x x01x x21x x11x x01x
xxxx xxxx xxxx xxxx xxxx xxxx
I nodi che contano sono stati attraversati in entrambi i casi. Usiamo Larghezza Prima ricerca per attraversare tutti i nodi. Il ?
nella 3a riga non viene attraversato in alcuni casi perché questo campo non si trova nel gruppo dei campi obiettivo e la sua altezza non influisce sul raggiungimento di nessuno dei campi di destinazione.