Memoization

Fabian04088

Aktives Mitglied
eine ganz dumme Frage wenn ich so etwas schreiben will:

Es werden mindestens so viele Gewürze g angeschafft, wie es vegane Grundgerichte v gibt, aus Kostengründen aber maximal 123 verschiedene Gewürze (1 ≤ v ≤ g ≤ 123).
Jedes Gericht soll mit mindestens einem Gewürz abgeschmeckt werden.

Java:
 public static long essen(int v, int g)

muss ich es dann mit einer for schleife schreiben?
 

Fabian04088

Aktives Mitglied
Das Küchenpersonal der Mensa hat ein Problem: In einer Umfrage haben sich die Studierenden über das angeblich fade Essen beschwert und zusätzlich gefordert, dass jedes Gericht auch vegan angeboten werden muss. Hier nun der Plan des Studentenwerks:

• Es werden mindestens so viele Gewürze g angeschafft, wie es vegane Grundgerichte v gibt, aus Kostengründen aber maximal 123 verschiedene Gewürze (1 ≤ v ≤ g ≤ 123).

• Jedes Gericht soll mit mindestens einem Gewürz abgeschmeckt werden.

• Jedes Gewürz soll für genau ein Gericht verwendet werden.

• Alle veganen Grundgerichte schmecken ungewürzt gleich und sehen auch identisch aus. • Bei nicht-veganen Gerichten wird einfach zusätzlich etwas Hackfleisch reingekippt.

Das sind so zu sagen die Basisfälle und ja das mit der if Abfrage hab ich verstanden dankeschön :) und die anderen drei muss ich dann genau so machen ?
 

Blender3D

Top Contributor
(1 ≤ v ≤ g ≤ 123)
Du hast das mathematisch bereits formuliert. Ein Schleife würde mittels Summe oder Produkt etc. über einer laufenden Variable ausgedrückt.
z.B.
1607517017724.png
Es werden mindestens so viele Gewürze g angeschafft, wie es vegane Grundgerichte v gibt, aus Kostengründen aber maximal 123 verschiedene Gewürze
Außerdem ist dein Ausdruck nicht korrekt. Laut obiger Definition ergibt sich v ≤ g ≤ 123 v = Anzahl vegane Gerichte; g = Anzahl Gewürze.
Übrig bleiben Bedingungen. ( if .. )
 

Anhänge

  • 1607516903178.png
    1607516903178.png
    2,9 KB · Aufrufe: 21
K

kneitzel

Gast
Also es gibt einige Daten, aber keinerlei Aussage, was getan werden soll oder wonach gefragt wurde ...
 

mrBrown

Super-Moderator
Mitarbeiter
@Fabian04088, hat der Titel irgendwas mit dem Thema zu tun? Bisher seh ich da keinen Zusammenhang zu "Memoization", aber ich will es auch nicht einfach so anpassen, wenn du dir irgendwas dabei gedacht hast.
 

Fabian04088

Aktives Mitglied
ich wollte jetzt nicht die ganze Aufgabenstellung rein schreiben aber anscheinend ist es leichter es so zu verstehen
Das Küchenpersonal der Mensa hat ein Problem: In einer Umfrage haben sich die Studierenden über das angeblich fade Essen beschwert und zusätzlich gefordert, dass jedes Gericht auch vegan angeboten werden muss. Hier nun der Plan des Studentenwerks:

• Es werden mindestens so viele Gewürze g angeschafft, wie es vegane Grundgerichte v gibt, aus Kostengründen aber maximal 123 verschiedene Gewürze (1 ≤ v ≤ g ≤ 123).

• Jedes Gericht soll mit mindestens einem Gewürz abgeschmeckt werden.

• Jedes Gewürz soll für genau ein Gericht verwendet werden.

• Alle veganen Grundgerichte schmecken ungewürzt gleich und sehen auch identisch aus.

• Bei nicht-veganen Gerichten wird einfach zusätzlich etwas Hackfleisch reingekippt. Die Verteilung der g Gewürze auf die v veganen Grundgerichte soll möglichst abwechslungsreich gestaltet werden. Für die Erstellung des wöchentlichen Speiseplans muss das Studentenwerk bestimmen, wie viele unterschiedliche Würzmischungen Wv,g auf diesem Wege überhaupt möglich sind und schließlich wie viele verschiedene Essen Ev,g im Speiseplan stehen werden:

• Bei gleich vielen veganen Gerichten wie Gewürzen (v = g) gibt es eine Würzung Wv,g = 1: Jedes vegane Gericht bekommt genau eines der Gewürze.

• Bei nur einem veganen Gericht (v = 1) gibt es auch genau eine Würzmöglichkeit Wv,g = 1: Alle Gewürze werden in das eine Gericht zusammengekippt.

• Andernfalls gibt es weitere Kochtricks: Man nehme das erstbeste Gewürz G zur Hand und . . . – entweder gibt es ein Gericht, das nur mit diesem einen Gewürz G abgeschmeckt wird, dann verteilen sich die restlichen g − 1 Gewürze auf die anderen v − 1 Gerichte; – oder das Gewürz G kommt zusammen mit anderen Gewürzen in das gleiche Gericht, dann werden zuerst die anderen g−1 Gewürze auf alle v Gerichte verteilt (ergibt Wv,g−1 Würzmischungen) und anschließend wird das aktuelle Gewürz G zu einem beliebigen der v Gerichte hinzugefügt (wofür es v Möglichkeiten gibt). ; Das macht dann insgesamt Wv,g = Wv−1,g−1 + v · Wv,g−1 vegane Würzmischungen.

• Die v veganen Grundgerichte und die Wv,g Würzmischungen werden schließlich sowohl mit als auch ohne Hackfleisch zu Ev,g = 2 ·(Wv,g + v) unterschiedliche Essen zusammengerührt. Erstellen Sie eine Klasse VeggieWahn mit einer Methode long essen(int v, int g) so, dass sie die oben beschriebene Anzahl Ev,g ermittelt und zurückgibt. Verwenden Sie zur Implementierung unbedingt Memoization. Sie dürfen davon ausgehen, dass das Ergebnis Ihrer Rechnung in einen long passt. Sie dürfen Ihrer Klasse VeggieWahn bei Bedarf auch private statische Attribute bzw. Hilfsmethoden hinzufügen.


Java:
public class VeggieWahn {
    public static long essen(int v, int g) {
if (v < 1 || g < 1 || v > 123|| g >123){
    return essen(v,g);
}
if (g == 0 || v==0){
    return 0;
}
if (g == 1 || v == 1){
    return 1;
}
return 2;
    }
}
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben