1. 程式人生 > >動態規劃-最少硬幣組合問題

動態規劃-最少硬幣組合問題

import java.util.Scanner;

/*
 * 假設有 1 元,3 元,5 元的硬幣若干(無限),現在需要湊出 11 元,問如何組合才能使硬幣的數量最少?
 */
public class GetLeastNum {
    public int getLeastNum(int[] array,int n){
        int lens=array.length;
        if(array==null||lens==0||n<0)
            return 0;
        int[] dp=new int[n+1];
        for(int
i=0;i<n+1;i++) dp[i]=0; for(int i=1;i<n+1;i++){ int min=999999; for(int j=0;j<lens;j++){ if(i-array[j]>=0){ int temp=dp[i-array[j]]+1; if(temp<min) min=temp; } } dp[i]=min; } return
dp[n]; } public static void main(String[] args) { // TODO Auto-generated method stub GetLeastNum gl=new GetLeastNum(); int[] array={1,3,5}; Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int min_count=gl.getLeastNum(array, n); System.out
.println(min_count); } }

相關推薦

動態規劃-最少硬幣組合問題

import java.util.Scanner; /* * 假設有 1 元,3 元,5 元的硬幣若干(無限),現在需要湊出 11 元,問如何組合才能使硬幣的數量最少? */ public cla

動態規劃-最少硬幣問題

題目描述 如果我們有面值為1元、3元和5元的硬幣若干枚,如何用最少的硬幣湊夠11元? 分析 來手寫一下求取最小個數的過程,用MIN[i]表示要湊得i元所需的最少硬幣個數 MI

動態規劃硬幣面值組合(上臺階)

問題 1分2分5分的硬幣三種,組合成1角,共有多少種組合? 有1分,2分,5分,10分四種硬幣,每種硬幣數量無限,給定n分錢,有多少中組合可以組成n分錢? 一個人上臺階可以一次上1個,2個,或者3個,問這個人上n層的臺階,總共有幾種走法? 問法不一樣,但是

動態規劃硬幣面值組合問題

問題描述   假設我們有8種不同面值的硬幣{1,2,5,10,20,50,100,200},用這些硬幣組合夠成一個給定的數值n。例如n=200,那麼一種可能的組合方式為 200 = 3 * 1 + 1*2 + 1*5 + 2*20 + 1 * 50 + 1

【BZOJ4559】[JLoi2016]成績比較 動態規劃+容斥+組合數學

desc return char 條件 long long 暴力 inline etc sin 【BZOJ4559】[JLoi2016]成績比較 Description G系共有n位同學,M門必修課。這N位同學的編號為0到N-1的整數,其中B神的編號為0號。這M門必

java動態規劃硬幣問題

四種 ava exti 千萬 print light sca 小數 length 最近一直在研究動態規劃的問題。今天遇到了取硬幣問題。 其實動態規劃還是,我從底部向頂部,依次求出每個狀態的最小值,然後就可以標記上。 這道題目就是,假如有1,5,7,10這四種幣值的硬幣,我取

P1759 通天之潛水(不詳細,勿看)(動態規劃遞推,組合揹包,洛谷)

題目連結:點選進入 題目分析: 簡單的組合揹包模板題,但是遞推的同時要重新整理這種情況使用了哪些物品 ac程式碼: #include<bits/stdc++.h> using namespace std; int weigh[101],zhu[101],t[101]; stru

P1759 通天之潛水(不詳細,勿看)(動態規劃遞推,組合背包,洛谷)

規劃 .org turn 分析 student false number 找到 div 題目鏈接:點擊進入 題目分析: 簡單的組合背包模板題,但是遞推的同時要刷新這種情況使用了哪些物品 ac代碼: #include<bits/stdc++.h> u

動態規劃硬幣兌換(Coin Change)

已知N,如果我們想要換N分,而且每種S = { S1, S2, .. , Sm} 價值的硬幣是不限數量的,那麼我們有多少種方法來兌換?硬幣的順序是無所謂的。 例如:N = 4,S = {1,2,3},,因此有四種答案: {1,1,1,1},{1,1,2},

動態規劃求解硬幣找零問題——Java實現

動態規劃的基本思想是將待求解問題分解成若干個子問題,先求解子問題,並將這些子問題的解儲存起來,如果以後在求解較大子問題的時候需要用到這些子問題的解,就可以直接取出這些已經計算過的解而免去重複運算。儲存子問題的解可以使用填表方式,例如儲存在陣列中。  動態規劃的主要難點在於

詳解_動態規劃DAG_硬幣找零問題(完全揹包)

寫了好多結果一下卡住都沒了。。。(csdn怕是把大部分伺服器資源用在了廣告投放上吧) 參考數目:演算法競賽入門經典(第二版) NYOJ 995: 描述 在現實生活中,我們經常遇到硬幣找零的問題,例如,在發工資時,財務人員就需要計算最少的找零硬幣數,以便他們能從銀行拿回

動態規劃-DAG-硬幣問題

題目:有n種硬幣,面值分別為V1,V2,…Vn,每種都有無限多。給定非負整數S,可以選用多少個硬幣,使得面值之和恰好為S?輸出硬幣數目的最小值和最大值!   若用記憶化搜尋,需構建2個dp函式,如下為只寫了求最大數量的程式碼 #include<iostream&

基礎演算法——動態規劃硬幣問題

""" 我們有面值為1元3元5元的硬幣若干枚,如何用最少的硬幣湊夠11元? 1 求問題的最優解:最小的硬幣數 2 是否有子問題:coin(n)表示的最少硬幣數是是上一次拿時候的硬幣數最少。 注意:coin(n)是n元的最小硬幣數,最後一次可拿的硬幣數為1,3

最少硬幣問題(動態規劃遞推式)

最少硬幣問題 時間限制(普通/Java) : 1000 MS/ 3000 MS          執行記憶體限制 : 65536 KByte總提交 : 247            測試

動態規劃-硬幣組合數目

import java.util.Scanner; /* * 硬幣的型別有1角,2角,5角,給定一個數額n,多少種組合方式 */ //暴力解法 public class CashNum {

最少硬幣找零問題-動態規劃

動態規劃把問題分為子為題,解決了這些子問題,再把子問題合併起來,便可以得到問題的解。在解決子問題過程中,需要把子問題的解儲存起來方便後面使用。 最少硬幣找零問題為:給予不同面值的硬幣若干種種(每種硬幣個數無限多),用若干種硬幣組合為某種面額的錢,使硬幣的的個數最少。

動態規劃 需要最少硬幣

假設給你 總額為11元,硬幣種類為 1,3,5. 求最小的硬幣數 遞推公式為:d(i)=min{ d(i-vj)+1 }  vj為面額 1,3,或者5 這個基本是最簡單的動態規劃演算法,程式碼如下:p

最少硬幣問題(動態規劃解決)

設有n中不同面值的硬幣,各硬幣的面值存在於陣列T[1..n]中,可以使用的面值硬幣個數不限。假如現在找的錢是j,1<<j<<L,求使得的硬幣數目最少 解決方法: 另c[i,j]代表用前中硬幣兌換j所用的最少數目。#include "stdafx.h"

動態規劃-硬幣組合

1.問題描述        對於m個面值為v1,v2,vm的硬幣,組成錢數n,不限制硬幣的數量和位置,求這些硬幣,最多有多少種組合的結果剛好等於n。2.分析     n=x1*v1+x2*v2+....+xm*vm,{x1,x2,....,xm}就是其中的一種組合,定義l[i

動態規劃最少硬幣換取目標錢數【0-1揹包問題】

/*********************************** 最少硬幣換取目標錢數【0-1揹包問題】 ***************************************/ /***************************** 思路: 1.建立