貨幣系統問題 (完全揹包)

2021-09-24 10:46:25 字數 877 閱讀 5867

貨幣是在國家或經濟體內的物資與服務交換中充當等價物,或是償還債務的特殊商品,是用作交易媒介、儲藏價值和記賬單位的一種工具。魔法世界的貨幣的歷史,可以追溯至史前以物易物的階段,後來經過金屬貨幣、金銀、紙幣以及金銀本位制度,演化至現代的貨幣體系,現已知魔法世界的貨幣系統有v種面值,求組成面值為n的貨幣有多少種方案。

第一行為兩個整數v和n,v是貨幣種類數目,1≤v≤25,n是要構造的面值,1≤n≤1000。

第二行為v種貨幣的面值。

輸出方案數。

3 10

1 2 5

10

令dp[i][v]表示用前i種硬幣能表示v數量貨幣的方法數,則對第i種硬幣也有選和不選的策略,而總的方案數為二者之和,因此可得狀態轉移方程:

dp[i][v]=dp[i-1][v]+dp[i][v-w[i]]    (1<=i<=n,w[i]<=v<=v)

邊界dp[1][v]=1(其餘dp初始皆為0)

去掉i維進行優化:dp[j]=dp[j]+dp[j-val[i]];   dp[0]=1;

#include using

namespace

std;

int val[25

];long

long dp[10008]=;

intmain()

dp[0]=1

;

for(int i=0;i)

}cout

return0;

}

posted @

2018-02-23 13:07

albert_liu 閱讀(

...)

編輯收藏

貨幣系統 (完全揹包)

首先我們要想到,最後的最小的貨幣系統應該是原貨幣系統的乙個子集,原因也很簡單 如果a能夠用其他乙個或若干個面值表示那麼它顯然不必要,而如果你去引入乙個原來不存在的數那麼要麼是多於的 能被原來貨幣系統裡面的乙個或多個數表達 要麼就會引入新的東西。所以現在我們要做到就是在剛剛的集合裡面求所有必要的無法被...

完全揹包 NOIP2018 貨幣系統

在的國度中共有 n 種不同面額的貨幣,第 i 種貨幣的面額為 a i 你可以假設每一種貨幣都有無窮多張。為了方便,我們把貨幣種數為 n 面額陣列為 a 1.n 的貨幣系統記作 n,a 在乙個完善的貨幣系統中,每乙個非負整數的金額 x 都應該可以被表示出,即對每乙個非負整數 x 都存在 n 個非負整數...

揹包問題(完全揹包)

1.矩陣鏈乘法 2.投資組合問題 3.完全揹包問題 4.01揹包問題 5.最長公共子串行 乙個揹包,可以放入n種物品,物品j的重量和價值分別為,如果揹包的最大重量限制是b,怎麼樣選擇放入揹包的物品以使得揹包的總價值最大?組合優化問題,設表示裝入揹包的第j個物品的數量,解可以表示為。那麼目標函式和約束...