Supponiamo di avere una piramide n-alta di numeri come:
1
5 8
2 5 4
8 9 3 1
2 8 3 7 2
Come posso percorrere algoritmicamente ogni possibile percorso dalla cima della piramide alla fine?
Per spiegarti meglio, lascia che rappresenti la piramide in questo modo:
1 2 3 4 5
-----------
1 | a
5 8 | b
2 5 4 | c
8 9 3 1 | d
2 8 3 7 2 | e
Ad esempio:
On the path | a b c d e (Path)
-------------|------------------
Path 1: 1 5 2 8 2 | 1 1 1 1 1
Path 2: 1 5 2 8 8 | 1 1 1 1 2
Path 3: 1 5 2 9 8 | 1 1 1 2 2
Path 4: 1 5 2 9 3 | 1 1 1 2 3
...
Path m: 1 8 4 1 2 | 1 2 3 4 5
Dove m è il numero totale di percorsi.
Capisco che il problema può essere ridotto a generare semplicemente tutti i possibili percorsi denotati nella seconda colonna della tabella, e potrei arrivare abbastanza facilmente con un algoritmo per generare quelli per un 5-alto (o qualsiasi altro fisso alto) piramide, ma non riesco a trovare una soluzione generale.
L'algoritmo non può essere ricorsivo, per il semplice motivo che ho già risolto il problema in modo ricorsivo e sono interessato a una soluzione non ricorsiva per ottenere una visione completa del problema.