1. 程式人生 > >入門級貪心算法——java實現

入門級貪心算法——java實現

種類 循環 決策 一個 pri target 下一個 元素 can

貪心算法入門

貪心算法是一種思路,而不是一種公式。

認真看,一會兒就會了!

個人網站:多貓影視(能看各大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實現