貪婪算法的基本思路:
從問題的某一個初始解出發(fā)逐步逼近給定的目標崭参,以盡可能快地求得更好的解请琳。當達到算法中的某一步不能再繼續(xù)前進時,就停止算法层坠,給出近似解。
由貪婪算法的特點和思路可看出刁笙,該算法存在以下問題:
- 不能保證最后的解是最優(yōu)的
- 不能用來求最大或最小解問題
- 只能求滿足某些約束條件的可行解的范圍
換零錢
該程序?qū)崿F(xiàn)超市收銀的找零方案窿春,輸入需要找補給顧客的金額,由程序計算出該金額可有哪些面值人民幣組成采盒。人民幣假設(shè)有100,50,20,10,5,2,1,0.5,0.2,0.1
import java.util.Scanner;
public class chargeMoney {
static double money[]= {10000,5000,2000,1000,500,200,100,50,20,10}; //乘100旧乞,不讓容易錯
static int num[]=new int[10];
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
double mon=input.nextDouble();
double tmon=mon*100; //記得乘100,臨時變量
int i;
for(i=0;i<10;i++) {
if(tmon>money[i]) {
break;
}
}
while(tmon>0&&i<10) {
if(tmon>=money[i]) {
tmon-=money[i];
num[i]++;
}else if(tmon<10&&tmon>=5) {
num[9]++;
break;
}else {
i++;
}
}
for(int j=0;j<10;j++) {
if(num[j]==0) {
continue;
}
System.out.println(money[j]/100+":"+num[j]);
}
}
}