贪心算法入门
贪心算法是一种思路,而不是一种公式。
认真看,一会儿就会了!
个人网站:多猫影视(能看各大vip视频)www.duomao.xyz
package com.niu.test; import java.util.Scanner; /** * Created by Administrator on 2017/9/28. */ public class TanXin1 { /** * 贪心算法,找零钱 * 假设有100 50 10 1零钱供找零,输入找零的钱返回找零的钱和张数 * * 思路: * while(能朝给定目标前进一步){ * 利用可行的决策,求出可行解的一个元素 * } * 由所有元素组合成问题的一个可行解; * 这里我没有提现结果的组合,直接进行了打印输出。 * 循环的思路: * 1、从100元开始找零直到1元:while (i <= (a.length - 1)) * 2、判断当前找零的钱是否大于剩余要找零的钱(不然找零为负数):count >= a[i],如果小于count则换到下一个面额的货币 * 3、输出找零的钱和张数:System.out.println("找零:" + a[i] + "元" + count / a[i] + "张。"); * 4、如果剩余钱数为0则找零结束否则i+1换到下一个货币值 * * @param args */ public static void main(String[] args) { while (true) { int[] a = {100, 50, 10, 5, 1}; System.out.println("输入找零的钱:"); Scanner sc = new Scanner(System.in); //count 总钱数 int count = sc.nextInt(); //i 总共的货币种类 int i = 0; while (i <= (a.length - 1)) { //没有找的零钱大于a[i]的时候执行找零钱 if (count >= a[i]) { System.out.println("找零:" + a[i] + "元" + count / a[i] + "张。"); //剩余count等于count减去已经找零的金额。 count = count - count / a[i] * a[i]; if (count == 0) { System.out.println("找零完毕!"); break; } else { i++; } } else { i++; } } } } }
结果:
时间: 2024-11-05 16:04:31