贪婪算法

贪婪算法的基本思路:
从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快地求得更好的解。当达到算法中的某一步不能再继续前进时,就停止算法,给出近似解。
由贪婪算法的特点和思路可看出,该算法存在以下问题:

  • 不能保证最后的解是最优的
  • 不能用来求最大或最小解问题
  • 只能求满足某些约束条件的可行解的范围

换零钱

该程序实现超市收银的找零方案,输入需要找补给顾客的金额,由程序计算出该金额可有哪些面值人民币组成。人民币假设有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]);
        }
    }
}

你可能感兴趣的:(贪婪算法)