【发布时间】:2010-11-06 10:34:20
【问题描述】:
我在javabat中遇到了这个问题(http://www.javabat.com/prob/p183562):
我们想制作一排砖, 是目标英寸长。我们有一个号码 小砖(每块 1 英寸)和大 砖(每块 5 英寸)。如果返回真 可以通过 从给定的砖块中选择。这 比看起来要难一点 可以在没有任何循环的情况下完成。
makeBricks(3, 1, 8) → 真
makeBricks(3, 1, 9) → 假
makeBricks(3, 2, 10) → 真
我想出了这个解决方案:
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。我的逻辑将返回错误。我应该如何修正我的逻辑?或者有更好的方法吗?
【问题讨论】:
-
这当然是……Java和Python学习网站上的练习题之一……codingbat.com