gpt4 book ai didi

javascript - 贪心算法

转载 作者:行者123 更新时间:2023-12-03 03:25:18 24 4
gpt4 key购买 nike

我正在编写一段代码,当用户输入所欠找零金额时,返回等于该找零的最小硬币数量。例如,假设仅使用 25 美分、10 美分、5 美分和 10 分硬币。您输入 1.00 美元。我的代码将在屏幕上呈现的数字是 4(4 个硬币等于 1 美元)。但是,我遇到了一个小错误。例如,如果您输入 0.41 美元,您会期望代码再次呈现 4(1 四分之一 + 1 毛钱 + 1 镍 + 1 便士是等于 41 美分的最小排列量),但事实并非如此,它呈现5.44。请帮忙!预先感谢您。

document.write("Hi,how much change is due? ");

function greed () {

var n = document.getElementById('change').value;

if (n >=0)
{


function amount (amt){

return amt/25 + (amt%25)/10 + ((amt%25)%10)/5 + ((amt%25)%10)%5;

}
document.write(amount(Math.round(n*100)));
}
else {alert("Invalid Amount!")};
}
<!DOCTYPE html>

<html lang="en-US">

<head>

<title>Greedy! </title>
<script type="text/javascript" src="greedy.js" ></script>
</head>

<body>
<form>
<fieldset>
<input type="number" id="change" name="change" value="0"/>
<input type="submit" id="submit" name="submit" value="submit" onclick="greed();"/>

</fieldset>
</form>
</body>

</html>

最佳答案

这里的主要问题是您没有将数字视为整数,因此到处都是小数。让我们使用您的示例 (0.41):

amt = n*100 = 41,让我们看看返回结果:

return amt/25 + (amt%25)/10 + ((amt%25)%10)/5 + ((amt%25)%10)%5

相同
return 41/25 + (41%25)/10 + ((41%25)%10)/5 + ((41%25)%10)%5

如您所知,41/25 =/= 1,与(41%25)/10 = 16/10 =/= 1相同((41%25)%10)/5 = (16%10)/5 = 6/5 =/= 1,但你在代码中不关心这一点,所以你最终添加了这些小数数字直到最后,并得到奇怪的值。

您必须使用 parseInt() 来获取 Integer 值,因此它应该如下所示:

return parseInt(amt/25) + parseInt((amt%25)/10) + parseInt(((amt%25)%10)/5) + ((amt%25)%10)%5

要显示它的工作原理:

document.write("Hi,how much change is due? ");

function greed () {

var n = document.getElementById('change').value;

if (n >=0)
{


function amount (amt){

return parseInt(amt/25) + parseInt((amt%25)/10) + parseInt(((amt%25)%10)/5) + ((amt%25)%10)%5;

}
document.write(amount(Math.round(n*100)));
}
else {alert("Invalid Amount!")};
}
<!DOCTYPE html>

<html lang="en-US">

<head>

<title>Greedy! </title>
<script type="text/javascript" src="greedy.js" ></script>
</head>

<body>
<form>
<fieldset>
<input type="number" id="change" name="change" value="0"/>
<input type="submit" id="submit" name="submit" value="submit" onclick="greed();"/>

</fieldset>
</form>
</body>

</html>

关于javascript - 贪心算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46359962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com