码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-09-28 15:59:43      阅读:389      评论:0      收藏:0      [点我收藏+]

标签:ted   back   视频   package   class   new   util   create   公式   

贪心算法入门

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

认真看,一会儿就会了!

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

标签:ted   back   视频   package   class   new   util   create   公式   

原文地址:http://www.cnblogs.com/yjqc/p/7607028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!