https://codingbat.com/prob/p183562
我们要制造一排目标长为英寸的砖块。我们有许多小砖(每个1英寸)和大砖(每个5英寸)。如果可以通过选择给定的砖块来达成目标,则返回true。这比看起来要难一点,并且可以完成而没有任何循环。另请参阅:MakeBricks简介
makeBricks(3,1,8)→是 makeBricks(3,1,9)→否 makeBricks(3,2,10)→true
public boolean makeBricks(int small, int big, int goal) {
if((small + (big * 5)) < goal){
return false;
}
if((small >= (goal % 5)) && goal % 5 >= big) {
return true;
}
return false;
}
和其他喜欢它的人在......
下不起作用public boolean makeBricks(int small, int big, int goal) {
if((small + (big * 5)) < goal){
return false;
}
if((small >= (goal % 5))) {
return true;
}
return false;
}
是。 我们是否不必检查是否足够大?我很困惑。
答案 0 :(得分:0)
如果您有足够的小积木,那么small + (big * 5)) < goal)
条件将已经测试了您是否有足够的大积木。
添加goal % 5 >= big
无效,因为您并不总是需要大块砖。如果需要10英寸,则可以使用2块大砖,或10块小砖,或1块大砖和5块小砖。
答案 1 :(得分:0)
下面您可以找到该解决方案的实现(或其中一种解决方案)。
public boolean makeBricks(int small, int big, int goal) {
int reqBig = goal / 5; // how many big bricks can be used to reach goal
if (reqBig <= big)
{
if (goal % 5 <= small) // check if you have the required small bricks to reach goal
{
return true;
}
else
{
return false;
}
}
else
{
int reqSmall = goal - big*5; // how many small bricks required to reach goal
if (reqSmall <= small)
{
return true;
}
}
return false;
}
答案 2 :(得分:0)
实际上这应该检查积木
public boolean makeBricks(int small, int big, int goal) {
if ( (goal <= big*5 + small) && (small >= goal % 5)) {
return true;
}
return false;
}