javabat( http://www.javabat.com/prob/p183562 )でこの問題に遭遇しました:
ゴール インチの長さのレンガの列を作りたいと考えています。小さなレンガ (それぞれ 1 インチ) と大きなレンガ (それぞれ 5 インチ) がいくつかあります。指定されたブロックから選択してゴールを作ることができる場合は true を返します。これは見た目よりも少し難しく、ループなしで実行できます。
makeBricks(3, 1, 8) → true
makeBricks(3, 1, 9) → false
makeBricks(3, 2, 10) → true
私はこの解決策を思いつきました:
public boolean makeBricks(int small, int big, int goal) {
if (goal > small + big * 5)
return false;
else if (goal % 5 == 0)
return goal / 5 <= big;
else
return goal % 5 <= small;
}
これはテストに合格しました。しかし、私は反例を自分で見つけました: makeBricks(10, 0, 10) -> true. 私のロジックは false を返します。ロジックを修正するにはどうすればよいですか? または、これを行うより良い方法はありますか?