Hallo,
habe Probleme meine Hausaufgabe zu lösen.
Erstmal zur Aufgabe:
Professor Midas fährt auf einer Autobahn von Newmark nach Reno. Mit vollem Tank fährt sein Auto genau n Kilometer weit. Zu Beginn der Reise ist sein Auto vollgetankt. Midas möchte so wenige Tankstopps wie möglich machen.
Der Greedy-Algorithmus in eine Java-Methode implementiert werden:
int [] tankstopps (int n, int [] tankstellen, int z), wobei n die Reichweite des Autos ist und im Array tankstellen die Entfernungen der Tankstellen vom Startpunkt angegeben sind (tankstellen == {34,71,90}), z ist die Gesamtstrecke.
Die Methode soll ein Array mit den Nummern der Tankstellen zurückgeben(z.B. {0,2}= 1.und 3. Tabkstelle).
Da es ja Ziel ist, so wenige Stopps wie möglich zu machen, dachte ich, dass ich von hinten anfang zu überprüfen, ob ein Stop an dieser Tankstelle möglich ist.
Problem ist, dass wenn er an einer Tankstelle getankt hat, die Reichweite n neu zu benutzen.
Ach irgendwie schwierig zu erklären;-)
Hier mein bisheriger Lösungsansatz:
Wäre nett, wenn mir jemand hilft!
habe Probleme meine Hausaufgabe zu lösen.
Erstmal zur Aufgabe:
Professor Midas fährt auf einer Autobahn von Newmark nach Reno. Mit vollem Tank fährt sein Auto genau n Kilometer weit. Zu Beginn der Reise ist sein Auto vollgetankt. Midas möchte so wenige Tankstopps wie möglich machen.
Der Greedy-Algorithmus in eine Java-Methode implementiert werden:
int [] tankstopps (int n, int [] tankstellen, int z), wobei n die Reichweite des Autos ist und im Array tankstellen die Entfernungen der Tankstellen vom Startpunkt angegeben sind (tankstellen == {34,71,90}), z ist die Gesamtstrecke.
Die Methode soll ein Array mit den Nummern der Tankstellen zurückgeben(z.B. {0,2}= 1.und 3. Tabkstelle).
Da es ja Ziel ist, so wenige Stopps wie möglich zu machen, dachte ich, dass ich von hinten anfang zu überprüfen, ob ein Stop an dieser Tankstelle möglich ist.
Problem ist, dass wenn er an einer Tankstelle getankt hat, die Reichweite n neu zu benutzen.
Ach irgendwie schwierig zu erklären;-)
Hier mein bisheriger Lösungsansatz:
Java:
public class Greedy_Algorithmus
{
public static void main (String [] args) {
int n = 50;
int [] tankstellen = {34,71,90};
int z= 100;
tankstopps (50, new int[]{34, 71, 90}, 100 );
}
static int [] tankstopps (int n, int [] tankstellen, int z) {
int [] stopps;
if (n >= z){
return 0;
}
else {
for (int i= tankstellen.length-1; i>=0; i--) {
if (tankstellen[i] > n){
....
}
}
}
}
return stopps;
}
Wäre nett, wenn mir jemand hilft!