java - 简单的 'Make chocolate'逻辑和解决方案回顾

标签 java loops

我正在研究一个编码 Bat 问题 http://codingbat.com/prob/p191363这里已经有很多解决方案CondingBat Python puzzle results in "Timed out" .

我的解决方案被标记为部分正确。试图理解问题。

We want make a package of goal kilos of chocolate. We have small bars (1 kilo each) and big bars (5 kilos each). Return the number of small bars to use, assuming we always use big bars before small bars. Return -1 if it can't be done.

makeChocolate(4, 1, 9) → 4 makeChocolate(4, 1, 10) → -1
makeChocolate(4, 1, 7) → 2

据我了解,制作巧克力的方法应该使用所有可用的大块来达到目标​​,然后使用小块。如果大条已经足够,我将返回 0。 如果我对问题的理解不正确,有人可以告诉我吗?

这是我的解决方案:

public int makeChocolate(int small, int big, int goal) {
    if (small + big*5 < goal)  return -1;

    int smallNeeded = goal - big * 5;

    if(smallNeeded <= 0) return 0;

    return smallNeeded;
}

最佳答案

我的理解是这样的:

如果大小组合还不够,返回-1:

if((small + big * 5) < goal)  
{
    return -1;
}

如果大的足够多,则将 goal 减少任意数量的 5(对于大柱),然后返回剩余的数量以表示多少小柱:

else if((big * 5) > goal)
{
    return goal % 5;
}

如果没有足够的大金条来构成目标,则将值(value)减去大金条占用的所有千克,并将剩余的金条放入小金条中:

else
{
    return goal - big * 5; 
}

关于java - 简单的 'Make chocolate'逻辑和解决方案回顾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40515291/

相关文章:

java - 正则表达式重用一个模式来捕获多个组?

java - Log4j.xml 类别多个具有不同优先级的 appender-ref

php排序sql记录

Java 用户输入必须在范围内/为 20 行生成 10 的整数

php - 数组值存入mysql

java - 如何使用单例设计模式来建立和关闭 JDBC 连接?

java - Java 中的 "java.lang.ArrayIndexOutOfBoundsException"错误

java - 使用 String[] 调用 String... 函数

python - 如何循环回到开头

php - 使用 for 循环将变量添加到数据库