我写了一个简单的贪心算法,但不知何故它不起作用。
#include <stdio.h>
#include <iostream>
#include <conio.h>
int main(void)
{
float change;
std::cout << "Change: ";
std::cin >> change;
int quantity = 0;
while(change > 0.0){
if(change >= 0.5){
change -= 0.5;
}
else if(change >= 0.25){
change -= 0.25;
}
else if(change >= 0.1){
change -= 0.1;
}
else if(change >= 0.05){
change -= 0.05;
}
else if(change >= 0.01){
change -= 0.01;
}
quantity++;
std::cout << change << std::endl;
}
std::cout << quantity << std::endl;
_getch();
return 0;
}
例如,它适用于 0.5 和 0.25,但不适用于 0.01 或 0.1。(看起来它返回了一些非常小的数字)我看不出问题出在哪里。
//EDIT 将所有内容转换为 int 值以避免下面提到Zeno的问题