2017-05-31 13 views
1

次の問題を計算する関数を記述したいと思います。各レベルが異なる数のノードを持っているときにツリー内のノード数を計算する

私は、各レベルでノードの量が異なる4つのレベルがあることがわかっているツリーを持っています。

第2ノード 2 3つのノード各親ノード 3 4つのノード各親ノード 4 1ノード各親ノード

保ちつつツリーを作るために必要とされるノードの総数を計算する方法私がパラメータとして最小限の量のノードを与えるかどうかの比例。 (私が正しく計算されている場合)私は比率を維持するために40

そのツリーのノードの最小数PARAMTERとして分ノード数を与える。例えば

56の周りであろう。

私は、これはトリックを行う必要があり、この式

2X + 2x3y + 2x3y4z + 2x3y4zt =ノードの数が

+0

は、私はあなたがパラメータとして1を通過する場合、ノードの最小量は24であることを、正しく理解していますか?最初のノードには2人の子供がいて、それぞれに3人あり、それぞれには4 - > 2 * 3 * 4 = 24 – Taysumi

+0

56を与えてはいけません。 – feni000

+0

木構造がどのようになっているか教えてください。 'レベル1:X子供、レベル2:Y子供、レベル3:Z子供、レベル4:n子供'?たぶんこれは透明化に役立ちます。 – Taysumi

答えて

1

によって必要とされるノードの総数を計算することができると仮定する。

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

あなたの番号に24の数字が何回含まれているかを知る必要があるので、この数字を24で割ってください。結果を丸めて24で掛けて、合計ノードを得る必要があります。

編集

いくつかの例:

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

あなたの答えはOKですが、私は28ノードが必要になると思います:) 24ありがとうございます。 – feni000

関連する問題