2016-11-09 5 views
1

私はコード化バットの質問http://codingbat.com/prob/p191363に取り組んでいますが、既に多くの解決策がここにありますCondingBat Python puzzle results in "Timed out"シンプルな「チョコレートを作る」ロジックとソリューションのレビュー

私の解決方法は部分的に正しいとマークされています。問題を理解しようとしています。

チョコレートの目標キロのパッケージを作りたいと思います。我々は小さな棒を (各1キロ)と大きなバー(それぞれ5キロ)持っています。小さい棒の前に常に大きな棒を使用すると仮定して、使用する小さな棒の数を返す。 棒。完了できない場合は、 -1を返します。

makeChocolate(4、1、9)→4 makeChocolate(4、1、10)→-1
makeChocolate(4、1、7)→2

私が理解から、チョコレートを作りますメソッドは、利用可能なすべてのビッグバーを使用して目標に到達し、次に小さなバーを使用する必要があります。大きい棒がすでに十分であれば0を返します。 問題を間違って理解していると誰か教えていただけますか?ここで

私の解決策です:

public int makeChocolate(int small, int big, int goal) { 
    if (small + big*5 < goal) return -1; 

    int smallNeeded = goal - big * 5; 

    if(smallNeeded <= 0) return 0; 

    return smallNeeded; 
} 
+0

ここでは、コードスニペットのロジックはかなり私に近いと思われます。何が問題になっていますか? –

+0

コードチャレンジは私の答えを正しいものとしてマークしません。私は問題を間違って理解していると思った。さらにhttp://stackoverflow.com/questions/15617869/condingbat-python-puzzle-results-in-timed-outにはさまざまなソリューションがあります@ j.seashell –

答えて

2

私の理解では、このようなものである:大きな場合

if((small + big * 5) < goal) 
{ 
    return -1; 
} 

大小の組み合わせリターン-1で十分でない場合しかし、多くのvalによってgoalを十分に減らしている以上大きな棒に巻き取ら全てキロで値を下げgoalを補うために十分な大きなバーがある場合

else if((big * 5) > goal) 
{ 
    return goal % 5; 
} 

:(ビッグバーの)5のUEは、その後どのように多くの小さなバー用に残さ量を返します残りを小さくしてください:

else 
{ 
    return goal - big * 5; 
} 
関連する問題