Hallo zusammen,
habe eine eventuell simple Frage (hoffe sie ist nicht all zu dumm).
Wie kann ich zwei return Werte ausgeben?
Habe hier einen Greedy-Algorhitmus.
Ein Rucksack muss mit 24 Einheiten gefüllt werden, der computer soll immer das lokale Beste finden.
Funktioniert auch alles soweit, nur brauche ich noch den runner.item statt nur den Value, damit ich bzw. der Tutor auch weiß, welche Packete verwendet wurden.
By the way, weiß jemand, wieso der searchBig scheinbar immer doppelt durchläuft?
Ist nicht schlimm aber sinnlos iwie und wenns der Tutor merkt, zieht er Punkte ab.
(für den (nur) relevanten Bereich nach unten scrollen)
Interessant ist aber nur
Besten Dank schonmal!
habe eine eventuell simple Frage (hoffe sie ist nicht all zu dumm).
Wie kann ich zwei return Werte ausgeben?
Habe hier einen Greedy-Algorhitmus.
Ein Rucksack muss mit 24 Einheiten gefüllt werden, der computer soll immer das lokale Beste finden.
Funktioniert auch alles soweit, nur brauche ich noch den runner.item statt nur den Value, damit ich bzw. der Tutor auch weiß, welche Packete verwendet wurden.
By the way, weiß jemand, wieso der searchBig scheinbar immer doppelt durchläuft?
Ist nicht schlimm aber sinnlos iwie und wenns der Tutor merkt, zieht er Punkte ab.
(für den (nur) relevanten Bereich nach unten scrollen)
Code:
/**
* Write a description of class L here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class LinkedListElemente {
private Object item;
private Object size;
private int value;
private LinkedListElemente next;
public LinkedListElemente() { }
private LinkedListElemente(Object i, LinkedListElemente n) {
item = i;
next = n;
}
public static void main(String[] args){
LinkedListElemente Alle = new LinkedListElemente();
LinkedListElemente RuckSack = new LinkedListElemente();
Alle.insertlast("A",3,4);
Alle.insertlast("B",4,5);
Alle.insertlast("C",7,10);
Alle.insertlast("D",8,11);
Alle.insertlast("E",9,13);
System.out.println("Kontrollausgabe nach dem Anlegen");
Alle.ausgeben();
int maxGroeße = 0;
}
public void test(){
LinkedListElemente Alle = new LinkedListElemente();
LinkedListElemente RuckSack = new LinkedListElemente();
Alle.insertlast("A",3,4);
Alle.insertlast("B",4,5);
Alle.insertlast("C",7,10);
Alle.insertlast("D",8,11);
Alle.insertlast("E",9,13);
System.out.println("Kontrollausgabe nach dem Anlegen");
System.out.println("Verfügbar");
Alle.ausgeben();
System.out.println("Rucksack");
RuckSack.ausgeben();
int actGroeße = 0;
System.out.println("Anfangswert Rucksackkapazität " + actGroeße);
while (actGroeße <24){
if (Alle.searchBig(actGroeße) == 25){break;};
actGroeße=actGroeße+Alle.searchBig(actGroeße);
System.out.println("Zwischen Größe " + actGroeße);
}
System.out.println("Ergebnis " + actGroeße);
}
// suche das groeßte Element
public int searchBig(int i){
int temp = 24-i;
LinkedListElemente runner = this;
if (runner.value >= temp) {System.out.println("Fertig"); return 25;};
//System.out.println("Anfangswert runner" + runner.value);
while (runner.next.value<=temp && runner.next.value!= 0)
{runner=runner.next;};
//System.out.println("Endwert runner" + runner.value);
return runner.value;
}
public void insertlast(Object gegenstand, Object groeße, int wert) {
if (item == null) {
item = gegenstand;
size = groeße;
value = wert;
next = new LinkedListElemente();
} else
next.insertlast(gegenstand, groeße, wert);
}
public void ausgeben(){
System.out.println("==============" + "Ausgabe" + "==============");
LinkedListElemente runner = this;
//Kein Element Fall
if (runner == null) {return;};
//Nur 1 Element Fall
if (runner.next == null) {
System.out.println(runner.item + "," + runner.size + "," +runner.value);
return;}
//Allg. Fall
do{
System.out.println(runner.item + " " + runner.size + "," +runner.value);
runner = runner.next;
}while (runner.next != null);
}
}
Interessant ist aber nur
Code:
// suche das groeßte Element
public int searchBig(int i){
int temp = 24-i;
LinkedListElemente runner = this;
if (runner.value >= temp) {System.out.println("Fertig"); return 25;};
//System.out.println("Anfangswert runner" + runner.value);
while (runner.next.value<=temp && runner.next.value!= 0)
{runner=runner.next;};
//System.out.println("Endwert runner" + runner.value);
return runner.value;
}
Besten Dank schonmal!
Zuletzt bearbeitet: