贪心算法找零钱

package 贪心算法找零钱;

public class Main {

	/**
	 * 有3种硬币,10,5,1
	 * 给定num元,以最少的硬币数来换成它
	 */
	public static void main(String[] args) {
		f(108, 0, 0, 0);
		f(108);
	}
	/**
	 * 如果硬币多了,可以用用两个数组来存储
	 * 一个存硬币面值,一个存相应的数目
	 */
	private static void f(int num)
	{
		int n10=0,n5=0,n1=0;
		
			if(num>=10)
			{
				n10=num/10;
				num=num%10;
			}
			if(num>=5)
			{
				n5=num/5;
				num=num%5;
			}
			if(num<5){
				n1=num;
			}
		System.out.println("10元:"+n10+"---5元:"+n5+"---1元:"+n1);
	}
	
	/**
	 * 递归很慢
	 */
	private static void f(int num,int n10,int n5,int n1) {
		if(num==0)
		{
			System.out.println("10元:"+n10+"---5元:"+n5+"---1元:"+n1);
			return;
		}
		
		if(num>=10)
		{
			f(num-10,n10+1,n5,n1);
		}
		else if(num>=5&&num<10)
		{
			
			f(num-5,n10,n5+1,n1);
		}
		else if(num<5&&num>=1)
		{
			f(num-1,n10,n5,n1+1);
		}
	}
}
    原文作者:贪心算法
    原文地址: https://blog.csdn.net/e_one/article/details/50876691
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞