首页 Java java教程 动态规划之找零问题详解

动态规划之找零问题详解

Jul 20, 2017 pm 01:35 PM
动态规划 问题

  找零问题:需找零金额为W,硬币面值有(d1, d2, d3,…,dm),最少需要多少枚硬币。

  问题:需找零金额为8,硬币面值有(1, 3, 2, 5),最少需要多少枚硬币。

  设F(j)表示总金额为j时最少的零钱数,F(0) = 0,W表示找零金额,有零钱一堆{d1, d2, d3,…,dm}。同样根据之前的经验,要达到为j,那么必然是j – di(1 <= i <= m)面值的硬币数再加1个di面值的硬币,当然j >= di,即F(j) = F(j - di) + 1, j >= di。

  Java

 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 }
登录后复制

  Python3

 1 #coding=utf-8 2 def charge_making(money, num): 3     &#39;&#39;&#39; 4     找零问题 5     &#39;&#39;&#39; 6     count = [0] * (num + 1) 7     count[0] = 0 8     for j in range(1, num + 1): 9         minCoins = j10         for i in range(len(money)):11             if j - money[i] >= 0:12                 temp = count[j - money[i]] + 113                 if temp < minCoins:14                     minCoins = temp15         16         count[j] = minCoins17     18     return count[num]19 20 money = [1, 3, 2, 5]21 num = 822 count = charge_making(money, num)23 print(count)
登录后复制

tag

以上是动态规划之找零问题详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

聚类算法中的聚类效果评估问题 聚类算法中的聚类效果评估问题 Oct 10, 2023 pm 01:12 PM

聚类算法中的聚类效果评估问题,需要具体代码示例聚类是一种无监督学习方法,通过对数据进行聚类,将相似的样本归为一类。在聚类算法中,如何评估聚类的效果是一个重要的问题。本文将介绍几种常用的聚类效果评估指标,并给出相应的代码示例。一、聚类效果评估指标轮廓系数(SilhouetteCoefficient)轮廓系数是通过计算样本的紧密度和与其他簇的分离度来评估聚类效

解决C++代码中出现的'error: redefinition of class 'ClassName'”问题 解决C++代码中出现的'error: redefinition of class 'ClassName'”问题 Aug 25, 2023 pm 06:01 PM

解决C++代码中出现的“error:redefinitionofclass'ClassName'”问题在C++编程中,我们经常会遇到各种各样的编译错误。其中一个常见的错误是“error:redefinitionofclass'ClassName'”(类‘ClassName’的重定义错误)。这个错误通常出现在同一个类被定义了多次的情况下。本文将

如何使用C#编写动态规划算法 如何使用C#编写动态规划算法 Sep 20, 2023 pm 04:03 PM

如何使用C#编写动态规划算法摘要:动态规划是求解最优化问题的一种常用算法,适用于多种场景。本文将介绍如何使用C#编写动态规划算法,并提供具体的代码示例。一、什么是动态规划算法动态规划(DynamicProgramming,简称DP)是一种用来求解具有重叠子问题和最优子结构性质的问题的算法思想。动态规划将问题分解成若干个子问题来求解,通过记录每个子问题的解,

教你如何诊断常见问题的iPhone故障 教你如何诊断常见问题的iPhone故障 Dec 03, 2023 am 08:15 AM

iPhone以其强大的性能和多方面的功能而闻名,它不能幸免于偶尔的打嗝或技术困难,这是复杂电子设备的共同特征。遇到iPhone问题可能会让人感到沮丧,但通常不需要警报。在这份综合指南中,我们旨在揭开与iPhone使用相关的一些最常遇到的挑战的神秘面纱。我们的分步方法旨在帮助您解决这些常见问题,提供实用的解决方案和故障排除技巧,让您的设备恢复到最佳工作状态。无论您是面对一个小故障还是更复杂的问题,本文都可以帮助您有效地解决这些问题。一般故障排除提示在深入研究具体的故障排除步骤之前,以下是一些有助于

PHP算法解析:如何使用动态规划算法解决最长回文子串问题? PHP算法解析:如何使用动态规划算法解决最长回文子串问题? Sep 19, 2023 pm 12:19 PM

PHP算法解析:如何使用动态规划算法解决最长回文子串问题?动态规划(DynamicProgramming)是一种常用的算法思想,可以解决许多复杂的问题。其中之一是最长回文子串问题,即求一个字符串中最长的回文子串的长度。本文将介绍如何使用PHP编写动态规划算法来解决这个问题,并提供具体的代码示例。先来定义一下最长回文子串。回文串是指正反读都一样的字符串,而回

如何使用C++中的背包问题算法 如何使用C++中的背包问题算法 Sep 21, 2023 pm 02:18 PM

如何使用C++中的背包问题算法背包问题是计算机算法中经典的问题之一,它涉及到在给定的背包容量下,如何选择一些物品放入背包,使得物品的总价值最大化。本文将详细介绍如何使用C++中的动态规划算法来解决背包问题,并给出具体的代码示例。首先,我们需要定义背包问题的输入和输出。输入包括物品的重量数组wt[],物品的价值数组val[],以及背包的容量W。输出为选择哪些物

解决jQuery无法获取表单元素值的方法 解决jQuery无法获取表单元素值的方法 Feb 19, 2024 pm 02:01 PM

解决jQuery.val()无法使用的问题,需要具体代码示例对于前端开发者,使用jQuery是常见的操作之一。其中,使用.val()方法来获取或设置表单元素的值是非常常见的操作。然而,在一些特定的情况下,可能会出现无法使用.val()方法的问题。本文将介绍一些常见的情况以及解决方案,并提供具体的代码示例。问题描述在使用jQuery开发前端页面时,有时候会碰

弱监督学习中的标签获取问题 弱监督学习中的标签获取问题 Oct 08, 2023 am 09:18 AM

弱监督学习中的标签获取问题,需要具体代码示例引言:弱监督学习是一种利用弱标签进行训练的机器学习方法。与传统的监督学习不同,弱监督学习只需利用较少的标签来训练模型,而不是每个样本都需要有准确的标签。然而,在弱监督学习中,如何从弱标签中准确地获取有用的信息是一个关键问题。本文将介绍弱监督学习中的标签获取问题,并给出具体的代码示例。弱监督学习中的标签获取问题简介:

See all articles