我遇到一个编码问题,询问:
我们要制造一排目标长为英寸的砖块。我们有许多小砖(每个1英寸)和大砖(每个5英寸)。如果可以通过选择给定的砖块来达成目标,则返回true。这比看起来要难一些,并且可以完成而无需任何循环。
例如:
L511_makeBricks(3,1,8)→是
L511_makeBricks(3,1,9)→假
L511_makeBricks(3,2,10)→是。
我编写了以下代码:
public boolean L511_makeBricks(int small, int big, int goal) {
int smalln;
int bign;
smalln = 0;
bign = 0;
while (smalln <= small){
while (bign<= big) {
if (smalln + bign*5 == goal){
return true;
}else{
bign = bign + 1;
}
}
bign = 0 ;
smalln = smalln + 1;
}
return false;
}
当我运行问题时,它表示除“其他”以外的所有测试运行都是正确的,在“其他”中运行更多示例以检查是否正确。
我看不到我的代码出了什么问题。我的代码应该做的是遍历大小块的每种可能组合。
答案 0 :(得分:0)
尝试一下:
public boolean L511_makeBricks(int small, int big, int goal) {
if (big * 5 + small < goal) {
return false;
}
return goal % 5 <= small;
}