入门级贪心算法——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++;
                }

            }

        }
    }

}

结果:

时间: 2024-11-05 16:04:31

入门级贪心算法——java实现的相关文章

贪心算法-java实现

贪心算法的基本思路 1.建立数学模型来描述问题. 2.把求解的问题分成若干个子问题. 3.对每一子问题求解,得到子问题的局部最优解. 4.把子问题的解局部最优解合成原来解问题的一个解. 实现该算法的过程: 从问题的某一初始解出发: while 能朝给定总目标前进一步 do 求出可行解的一个解元素: 由所有解元素组合成问题的一个可行解. 贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,换句话说,当考虑做何种选择的时候,我们只考虑对当前问题最佳的选择而不考虑子问题

贪心算法换零钱(java)

贪心算法思想 贪心算法总是做出在当前看来做好的选择.也就是说贪心算法并不从整体最后考虑,他做出的选择只是局部最优选择.他所做出的仅是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解. 1.算法思路 贪心算法是一种不追求最优解,只希望得到较为满意解的方法.贪心算法一般可以快速得到满意的解,因为它省去了为找最优姐要穷尽所有肯呢个而必须耗费大量时间.贪婪(心)算法是一种改进了的分级处理方法.其核心是根据题意选取一种

JAVA算法基础-贪心算法

前言 学无止境.算法博大精深啊,一个贪心算法里面就隐含了这么多不同的场景实现,每个场景下的算法就有多种不同的实现,个人写法不一也成就了各种不同的漂亮算法,看了这些实现,也让我开拓了思维,这个世界的方案永远没有最完美的只有最合适的- ! 1.贪心算法概念 贪心算法也叫贪婪算法,当然叫法随意.主要目的是在问题求解时,做出最正确的判断= =,这不是贪心是啥?在计算机工程领域当中,就是说不考虑整体最优算法而是从局部做到最优解.当然贪心是算法不能对所有的问题都能得到整体都最优解,但对多数个问题还是能得到近

基于贪心算法求解TSP问题(JAVA)

前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 一.TSP问题 TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市.路径的选择目标是要求得的路径路程为所有路径之中的最小值. TSP问题

Java 算法(一)贪心算法

Java 算法(一)贪心算法 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 一.贪心算法 什么是贪心算法?是指在对问题进行求解时,总是做出当前看来是最好的选择.也就是说,不从整体最优上加以考虑,所得出的结果仅仅是某种意义上的局部最优解. 因此贪心算法不会对所有问题都能得到整体最优解,但对于很多问题能产生整体最优解或整体最优解的近似解. 贪心算法的构成部分: 候选对象集合 :候选添加进解的对象的结合· 解对象集合 :初始时

五大常用算法之三贪心算法

贪心算法 贪心算法简介: 贪心算法是指:在每一步求解的步骤中,它要求"贪婪"的选择最佳操作,并希望通过一系列的最优选择,能够产生一个问题的(全局的)最优解. 贪心算法每一步必须满足一下条件: 1.可行的:即它必须满足问题的约束. 2.局部最优:他是当前步骤中所有可行选择中最佳的局部选择. 3.不可取消:即选择一旦做出,在算法的后面步骤就不可改变了. 贪心算法案例: 1.活动选择问题  这是<算法导论>上的例子,也是一个非常经典的问题.有n个需要在同一天使用同一个教室的活动a

hduoj-1735 简单的贪心算法

字数统计 Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1987    Accepted Submission(s): 552 Problem Description 一天,淘气的Tom不小心将水泼到了他哥哥Jerry刚完成的作文上.原本崭新的作文纸顿时变得皱巴巴的,更糟糕的是由于水的关系,许多字都看不清了.可怜的Tom知道他闯下大祸了

贪婪法——————贪心算法

华信清明节放假,所以不用去上课,而我又不想出去,所以就用了一点时间去研究算法. 我今天开始看王晓华写的<算法的乐趣>,把它当做教材. 看到贪心算法,因为大一的时候C语言没学好,所以作者写的C实现代码不是看得很懂,但是基本思想还是能够掌握的. 接下来我总结一下我今天学到的贪心算法: 贪心算法是寻找最优解问题的常用方法. 基本思想是分三个步骤: 1.建立对问题精确描述的数学模型,包货定义最优解的模型. 2.将问题分成一系列的子问题,同时定义子问题的最优解结构. 3.应用贪心算法原则可以确定每个子问

Runnable接口和贪心算法

1 Runnable接口 Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现.设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议.激活的意思是说某个线程已启动并且尚未停止. 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口.实际上,Thread实现了Runnable接口. 2 贪心算法 贪心算法把问题分解为几个有顺序的子问题,逐一对子问题进行求解,每一步都是在已求解子问题的基础上求取最优解,是对已求解部分解的一个扩展,直到