

If remaining petrol is less than 0 while we reach the Move to the next petrolpump if curr_petrol is possible solution, otherwise returns -1

The function returns starting point if there is a Si podemos llegar al inicio, entonces podemos concluir que el inicio puede ser nuestro punto de partida.

Ahora volvemos a empezar a viajar desde el primer surtidor de gasolina y aprovechamos nuestro curr_petrol e intentamos llegar a la salida. Después de llegar a nuestra última bomba de gasolina, intentamos llegar a nuestra primera bomba de gasolina desde la última y digamos que tenemos una cantidad restante de gasolina como curr_petrol. Ahora repetimos el proceso hasta llegar a la última bomba de gasolina y actualizamos nuestro arranque cuando sea necesario. No necesitamos mirar ninguna bomba de gasolina entre la bomba de gasolina inicial marcada como inicio y el nuevo inicio, ya que sabemos que no podemos completar el viaje si partimos de cualquier bomba de gasolina intermedia porque eventualmente llegaremos a un punto donde la cantidad de gasolina es menor que la distancia. Intentamos de nuevo averiguar el siguiente punto desde donde podemos iniciar nuestro viaje, es decir, el siguiente surtidor de gasolina donde la cantidad de gasolina es mayor o igual a la distancia a recorrer y la marcamos como inicio. Si en el medio, en cualquier surtidor, la cantidad de gasolina es menor que la distancia a recorrer para llegar al siguiente surtidor, entonces podemos decir que no podemos completar el recorrido circular desde el inicio. Ahora marcamos esa bomba de gasolina como inicio y ahora comprobamos si podemos terminar el viaje hacia el punto final. Otra solución eficaz puede ser encontrar la primera bomba de gasolina donde la cantidad de gasolina sea mayor o igual a la distancia a recorrer para llegar a la siguiente bomba de gasolina. Let curr_petrol = arr.petrol - arr.distance Ĭomplejidad del tiempo: Estamos visitando cada surtidor de gasolina exactamente una vez, por lo tanto, la complejidad del tiempo es O (n) JavaScript program to find circular tour for a truck remove the starting petrol pump from tour Public static int printTour(petrolPump arr,
#Bomba de gasolina code#
# This code is contributed by Antara Das(anny) // C# program to find circular While (end != start || curr_petrol =0 else -1 Int printTour(struct petrolPump arr, int n) * Run a loop while all petrol pumps are not visited.Īnd we have reached first petrol pump again with 0 or more petrol */

Int curr_petrol = arr.petrol - arr.distance Consider first petrol pump as a starting point The function returns starting point if there is a possible solution, A petrol pump has petrol and distance to next petrol pump La imagen de abajo es un ensayo del enfoque anterior:Ī continuación se muestra la implementación del enfoque anterior: // C++ program to find circular tour for a truck Mantenemos dos variables de índice start y end que representan la parte posterior y frontal de la cola. Si la cantidad se vuelve negativa, seguimos retirando los surtidores de gasolina hasta que la cola se vacíe.Įn lugar de crear una cola separada, usamos la matriz dada como una cola. Primero colocamos la primera bomba de gasolina en la cola, seguimos poniendo las bombas de gasolina hasta que completamos el recorrido o la cantidad actual de gasolina se vuelve negativa. Un enfoque eficaz es utilizar una cola para almacenar el recorrido actual. La complejidad temporal del peor caso de esta solución es O (n ^ 2). Si encontramos un punto de partida con una solución factible, devolvemos ese punto de partida. Una solución simple es considerar cada surtidor de gasolina como un punto de partida y ver si hay un recorrido posible. La salida debe ser "start = 1" (índice de la 2ª bomba de gasolina). El primer punto desde donde el camión puede realizar un recorrido circular es el 2º surtidor de gasolina. Por ejemplo, supongamos que hay 4 surtidores de gasolina con la cantidad de gasolina y la distancia al siguiente par de valores de surtidor de gasolina como. Suponga que para 1 litro de gasolina, el camión puede recorrer 1 unidad de distancia. La complejidad de tiempo esperada es O (n).
