我正在研究一个编码蝙蝠问题http://codingbat.com/prob/p191363,这里已经有很多解决方案CondingBat Python 谜题导致“超时”。
\n\n我的解决方案被标记为部分正确。试图理解这个问题。
\n\n\n\n\n我们想要制作一包目标公斤的巧克力。我们有小金条(每条 1 公斤)和大金条(每条 5 公斤)。返回要使用的小 \n 条数,假设我们总是在小条之前使用大条。如果无法完成,则返回 -1。
\n\nmakeChocolate(4, 1, 9) \xe2\x86\x92 4 makeChocolate(4, 1, 10) \xe2\x86\x92 -1
\n
\n makeChocolate(4, 1, 7) \xe2\x86\x92 2
据我了解,制作巧克力的方法应该使用所有可用的大块来达到目标,然后使用小块。如果大条已经足够,则返回 0。有人可以告诉我我是否错误地理解了这个问题吗?
\n\n这是我的解决方案:
\n\npublic int makeChocolate(int small, int big, int goal) {\n if (small + big*5 < goal) return -1;\n\n int smallNeeded = goal - big * 5;\n\n if(smallNeeded <= 0) return 0;\n\n return smallNeeded;\n}\nRun Code Online (Sandbox Code Playgroud)\n
我的理解是这样的:
如果大和小组合回报还不够-1:
if((small + big * 5) < goal)
{
return -1;
}
Run Code Online (Sandbox Code Playgroud)
如果足够大,则减少goal5 个值(对于大条形),然后返回剩余的小条形数量:
else if((big * 5) > goal)
{
return goal % 5;
}
Run Code Online (Sandbox Code Playgroud)
如果没有足够的大条来弥补,则将goal值减少大条所占用的所有公斤,并将剩余的小条取为小:
else
{
return goal - big * 5;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17763 次 |
| 最近记录: |