一.简介
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。
贪心算法适用前提是局部最优解会导致全局最优解(局部最优解不一定是全局最佳解)
二.实现
1.期望商品找零纸币数最少:
package com.vincent;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
//定义纸币面额
int[] val = {
1,5,10,20,50,100};
//商品价格
int price = 23;
//找回金额
int remain = 100 - price;
List<Integer> rst = new ArrayList<>();
int sum = 0;
while(sum != remain){
for(int i=val.length-1;i>=0;i--){
if(val[i] + sum <= remain){
rst.add(val[i]);
sum += val[i]