只想仔细检查一下这段代码不会有任何错误,主要与模数运算符有关,我不确定。
问题是:
问题:写一个ACL算法,给定一个项目的成本(小于或等于一美元),给出买家将收到的50美分,20美分,10美分,5美分和1美分硬币的数量如果他们交出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仍然?希望有道理。
提前致谢。
答案 0 :(得分:2)
当你将3除以10时,得到0,余数为3.所以你的算法在这个意义上是正确的。
一般来说,计算机语言中唯一需要担心的是负数的处理 - 某些语言表现不同。
但是你并没有对负数进行讨论,所以不要担心自己。
答案 1 :(得分:1)
是
change = change % 10
无论最初的变化是43还是3,这仍然会返回3。