首页 文章

硬币改变算法

提问于
浏览
0

只想仔细检查一下这段代码不会有任何错误,主要与模数运算符有关,我不确定 .

问题是:

问题:编写一个ACL算法,给定一个项目的成本(小于或等于一美元),给出买方在递交时可获得的50美分,20美分,10美分,5美分和1美分硬币的数量超过一美元 . 您必须尽量减少更改中的硬币数量 .

我的解决方案是:

Algorithm coin_change
{
    int cost, change, fifty, twenty, ten, five, one;
    read(cost);
    change = 100 - cost;

    fifty = change / 50;
    change = change % 50;

    twenty = change / 20;
    change = change % 20;

    ten = change / 10;
    change = change % 10;

    five = change / 5;
    change = change % 5;

    one = change;

    print(fifty, twenty, ten, five, one);
}

我不确定的主要问题是,如果变化是93美分,这将变为43美分,然后下降到3美分 . 现在问题是“ change = change % 10 ”当变化为3美分时返回变为等于3?希望有道理 .

提前致谢 .

2 回答

  • 2

    根据定义,3模10将给你3 . 当你除以给定数字时剩下的剩余部分 .

    当你将3除以10时,得到0,余数为3.所以你的算法在这个意义上是正确的 .

    通常,在计算机语言中使用模数时唯一需要担心的是负数的处理 - 某些语言表现不同 .

    但你并没有对负数进行讨论,所以不要担心自己 .

  • 1

    是 .

    change = change % 10
    

    无论最初的变化是43还是3,这仍然会返回3 .

相关问题