2017-05-31 4 views
1

Ich möchte eine Funktion schreiben, die das folgende Problem berechnet.Berechnen der Anzahl der Knoten in einem Baum, wenn jede Ebene unterschiedliche Anzahl von Knoten hat, basierend auf der minimalen Gesamtanzahl der Knoten

Ich habe einen Baum, den ich kenne, der 4 Ebenen mit einer unterschiedlichen Anzahl von Knoten auf jeder Ebene hat.

ersten 2 Knoten 2. 3 Knoten jeder Elternknoten 3. 4 Knoten jeder Elternknoten 4. 1 Knoten jeder Elternknoten

Wie eine Gesamtzahl von Knoten zu berechnen, die einen Baum zu machen, während halten erforderlich wäre, Anteil, wenn ich eine minimale Menge an Knoten als Parameter geben würde.

Zum Beispiel geben I min Knotenanzahl als Paramter 40

Die minimale Anzahl von Knoten für den Baum Verhältnis zu halten würde 56 um (wenn I berechnet korrekt).

Ich gehe davon aus, dass ich die Gesamtzahl der Knoten durch diese Gleichung erforderlich berechnen kann

2x + 2x3y + 2x3y4z + 2x3y4zt = Anzahl der Knoten

+0

Habe ich das richtig verstanden, dass, wenn Sie 1 als Parameter übergeben würde, ist die minimale Menge an Knoten 24? Erster Knoten hat 2 Kinder, jeder von ihnen hat 3 und jeder von ihnen hat 4 -> 2 * 3 * 4 = 24 – Taysumi

+0

Nein sollte es geben 56. – feni000

+0

Könnten Sie uns bitte sagen, wie Ihre Baumstruktur in diesem Format aussieht: "Level 1: X Kinder, Level 2: Y Kinder, Level 3: Z Kinder, Level 4: n Kinder"? Vielleicht hilft das Klären. – Taysumi

Antwort

1

Diese den Trick tun sollten:

private static int GetNodes(int min) => ((int)Math.Ceiling(min/24.0)) * 24;

Sie müssen wissen, wie oft 24 in Ihre Zahl passt, also teilen Sie diese Zahl durch 24. Dann müssen Sie das Ergebnis aufrunden und es mit 24 multiplizieren, um Ihre gesamten Knoten zu erhalten.

bearbeiten

Einige Beispiele:

Console.WriteLine(GetNodes(1)); // 24 
Console.WriteLine(GetNodes(23)); // 24 
Console.WriteLine(GetNodes(24)); // 24 
Console.WriteLine(GetNodes(25)); // 48 
Console.WriteLine(GetNodes(60)); // 72 
Console.WriteLine(GetNodes(100)); // 120 
Console.WriteLine(GetNodes(150)); // 168 
+0

Ihre Antwort ist in Ordnung, aber ich denke, ich würde 28 Knoten brauchen :) nicht 24 danke. – feni000

Verwandte Themen