Heim >Java >javaLernprogramm >Detaillierte Erläuterung des Änderungsproblems der dynamischen Programmierung

Detaillierte Erläuterung des Änderungsproblems der dynamischen Programmierung

零下一度
零下一度Original
2017-07-20 13:35:002881Durchsuche

Wechselgeldproblem: Der benötigte Wechselgeldbetrag ist W, die Nennwerte der Münzen sind (d1, d2, d3,..., dm), wie viele Münzen werden mindestens benötigt.

Frage: Der benötigte Wechselgeldbetrag beträgt 8, die Nennwerte der Münzen sind (1, 3, 2, 5), wie viele Münzen werden mindestens benötigt.

Sei F(j) die minimale Anzahl an Wechselgeldern, wenn der Gesamtbetrag j ist, F(0) = 0, W den Wechselgeldbetrag darstellt und es einen Wechselgeldhaufen {d1, d2, d3 gibt ,..., dm} . Basierend auf früheren Erfahrungen muss es, um j zu erreichen, die Anzahl der Münzen mit einem Nennwert von j sein – di(1 <= i <= m) plus 1 Münze mit einem Nennwert von di >= di, das heißt F (j) = F(j - di) + 1, j >= di. Python3

Tag

 1 package com.algorithm.dynamicprogramming; 2  3 import java.util.Arrays; 4  5 /** 6  * 找零问题 7  * Created by yulinfeng on 7/5/17. 8  */ 9 public class Money {10     public static void main(String[] args) {11         int[] money = {1, 3, 2, 5};12         int sum = 8;13         int count = money(money, sum);14         System.out.println(count);15     }16 17     private static int money(int[] money, int sum) {18         int[] count = new int[sum + 1];19         count[0] = 0;20         for (int j = 1; j < sum + 1; j++) { //总金额数,1,2,3,……,sum21             int minCoins = j;22             for (int i = 0; i < money.length; i++) {    //遍历硬币的面值23                 if (j - money[i] >= 0) {24                     int temp = count[j - money[i]] + 1; //当前所需硬币数25                     if (temp < minCoins) {26                         minCoins = temp;27                     }28                 }29             }30 31             count[j] = minCoins;32         }33         System.out.println(Arrays.toString(count));34         return count[sum];35     }36 }

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Änderungsproblems der dynamischen Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn