入门级贪心算法——java实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门级贪心算法——java实现相关的知识,希望对你有一定的参考价值。

贪心算法入门

贪心算法是一种思路,而不是一种公式。

认真看,一会儿就会了!

个人网站:多猫影视(能看各大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++;
                }


            }

        }
    }

}

 结果:

技术分享

 

以上是关于入门级贪心算法——java实现的主要内容,如果未能解决你的问题,请参考以下文章

Cg入门16:Fragment shader - 片段级光照

贪心算法入门

Cg入门19:Fragment shader - 片段级模型动态变色

贪心算法:划分字母区间

Java入门算法(树篇)

Java入门算法(树篇)