diciamo che ho una matrice n^n. In ogni cella c'è un numero positivo, e ho bisogno di recuperare il percorso con il peso più basso.recuperare il percorso con il peso più basso dalla matrice in modo ricorsivo
percorso è ogni percorso che inizia in matrix[0][0]
e finiscono in matrix[matrix.length-1][matrix[0].length-1]
, senza diagonali.
peso di di un percorso è la quantità di tutti i numeri nelle sue celle.
Ad esempio, supponiamo che ho questa matrice:
mat = {{1,2},{3,4}};
così {1,2,4}
è un percorso, e {1,3,4}
è un'altra percorso.
Il peso del primo percorso è (1 + 2 + 4) e la seconda ha un peso di (1 + 3 + 4), per cui la funzione restituirà .
Ho bisogno di risolverlo in modo ricorsivo. La pseudo codice dovrebbe essere qualcosa di simile:
if i > matrix.length-1 || i < 0 || j > matrix[0].length-1 || j < 0
//then I passed the borders, so I need to step back.
if i == matrix.length-1 && j == matrix[0].length-1
//Then I reached the last cell, and I need to retrieve sum
Quindi chiamare quattro recursives chiamate:
public static int smallPath(a, i+1, j, sum);
public static int smallPath(a, i, j+1, sum);
public static int smallPath(a, i-1, j, sum);
public static int smallPath(a, i, j-1, sum);
Poi ho bisogno di recuperare qualcosa, che cosa?
So che non è corrente ma questa è l'idea generale, qualcuno può aiutarmi a risolvere questo? Grazie!
Grazie per la risposta! Quali sono i parametri che devo inviare alla funzione? uno per i random alcuni che non sono cambiati e uno per le somme di sinistra che aumentano sempre per matrice [x] [y]? Ho davvero bisogno di assistenza con il codice .. – Avishay28
Modificato sopra. Non è molto difficile trovare la soluzione del mio approccio diretto, ma di solito non è corretta. –