gpt4 book ai didi

C - 我的贪婪算法不起作用 CS50x

转载 作者:行者123 更新时间:2023-11-30 18:50:33 25 4
gpt4 key购买 nike

我正在做 cs50x,并且在工作中遇到了一些麻烦。我应该创建一个算法,该算法将输出找回零钱所需的最少数量的硬币。例如 0.41 美元将是 4 个硬币,四分之一 (0.25),两个一角硬币 (0.10) 和一美分 (0.01)。由于某种原因,这个算法不起作用(它输出了错误数量的硬币),我无法计算找出原因:

#include <stdio.h>
#include <cs50.h>

int Coins;
float Owed;

int main(void)
{
printf("How much is owed?\n");
Owed = GetFloat();
while (Owed < 0)
{
printf("A positive number please");
Owed = GetFloat();
}
if (Owed >= 0.25)
{
while (Owed >=0.25)
{
Owed = Owed - 0.25;
Coins++;
}
}

if (Owed >= 0.1)
{
while (Owed >=0.1)
{
Owed = Owed - 0.1;
Coins++;
}

}

if (Owed >= 0.05)
{
while (Owed >=0.05)
{
Owed = Owed - 0.05;
Coins++;
}

}

if (Owed >= 0.01)
{
while (Owed >= 0.01)
{
Owed = Owed - 0.01;
Coins++;
}

}
printf("%d",Coins);
}

当我运行代码并使用 0.41 作为欠款金额时,我得到了 3 个硬币,而答案应该是 4:

GreedyNotWorkTerminalPage

最佳答案

当您使用float时,您需要注意这种操作可能会失去准确性。看看这个:Floating point inaccuracy examples

我建议您使用分,而是使用 int

Coliru example

关于C - 我的贪婪算法不起作用 CS50x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39913365/

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