Di seguito è riportata una descrizione di come penso possa funzionare. Non posso affermare che questa è l'unica soluzione. Non l'ho provato a fondo, quindi ti lascio questo per verificare.
In realtà penso che sia troppo difficile venire fuori durante un'intervista.
L'illustrazione allegata mostra l'idea generale. La variabile x rappresenta il nodo corrente in esame.
Utilizzaquestaformulaseseiperilprimonodo.
Utilizza questa formula per i nodi x = 2, ..., N
ogni nodo ha una quantità di gas g (x) e la distanza dal nodo x al nodo successivo è data da d (x, x + 1)
Il R.H.S dell'equazione di cui sopra dovrebbe essere la distanza tra gli ultimi due nodi in una rotta.
Si inizia generando una permutazione di percorsi validi - Esempio:
percorso 1: A, B, C, D, A
Percorso 2: B, C, D, A, B
percorso 3: C, D, A, B, C
percorso 4: D, A, B, C, D
L'idea è che per ogni percorso, a qualsiasi nodo x di una determinata rotta, è necessario calcolare se è possibile viaggiare verso il nodo successivo oppure no. Questo è determinato come segue:
[Passaggio 0] Controlla quanto gas hai finora + il gas massimo che puoi utilizzare dalla stazione corrente
se l'importo di cui sopra consente di raggiungere la stazione successiva, aggiungere questo nodo al percorso.
[Passaggio 1] se l'importo di cui sopra non è sufficiente, il punto di inizio attuale è negativo, prova un'altra rotta.
Ora, per calcolare la quantità di gas che hai a un nodo x, supponi che per ogni unità di gas che consumi, viaggi 1 unità di distanza, fai questo:
Somma tutto il gas riempito da ogni arresto del gas (g1 + g2 + ... + g (x-1)) - Somma tutte le distanze percorse (d1 + d2 + ... + d (x-1)) + Aggiungi a quanto sopra due somme il gas in questa stazione (g (x))
Esempio 1 - Utilizzo dei dati forniti:
percorso 1, A, B, C, D
Calcolo B (1):
g (1) = 4
d (1,2) = 5
B (1) = falso. Questo significa che scegliere la rotta A, B, C, D non è buona dato che se inizi da A, non avrai abbastanza benzina per andare a B.
Esempio 2:
percorso 2, B, C, D, A
Calcolo B (1):
g (1) = 48
d (1,2) = 45
g (1) < = d (1,2) è falso, quindi B (1) = falso che significa che a partire da B sta lavorando finora. Continua ad esaminare la situazione al prossimo nodo (C)
g (2) = 50
d (2,3) = 44
g (1) -d (1,2) = 48-45
Ora
50 + (48-45) < = (d (2,3) = 44) è falso, quindi B (2) è falso, questo significa che iniziare da B e arrivare a C sta funzionando finora. Continua i test per vedere lo stato al prossimo nodo (D)