USACO 2 3 貨幣系統 揹包 生成函式

2022-07-22 06:09:14 字數 1862 閱讀 8015

description

母牛們不但建立了他們自己的**而且選擇了建立了自己的貨幣系統。 

[in their own rebellious way],他們對貨幣的數值感到好奇。

傳統地,乙個貨幣系統是由1,5,10,20 或 25,50, 和 100的單位面值組成的。

母牛想知道有多少種不同的方法來用貨幣系統中的貨幣來構造乙個確定的數值。

舉例來說, 使用乙個貨幣系統 產生 18單位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它。

寫乙個程式來計算有多少種方法用給定的貨幣系統來構造一定數量的面值。

保證總數將會適合long long (c/c++) 和 int64 (free pascal)。

input

貨幣系統中貨幣的種類數目是 v 。 (1<= v<=25) 

要構造的數量錢是 n 。 (1<= n<=10,000)

第 1 行: 二整數, v 和 n

第 2 ..v+1行: 可用的貨幣 v 個整數 (每行乙個 每行沒有其它的數)。

output

單獨的一行包含那個可能的構造的方案數。 

末尾有空行

題解

dp;

executing...

test 1: test ok [0.000 secs, 1124 kb]

test 2: test ok [0.000 secs, 1124 kb]

test 3: test ok [0.000 secs, 1124 kb]

test 4: test ok [0.000 secs, 1124 kb]

test 5: test ok [0.000 secs, 1124 kb]

test 6: test ok [0.000 secs, 1124 kb]

test 7: test ok [0.000 secs, 1124 kb]

test 8: test ok [0.000 secs, 1124 kb]

test 9: test ok [0.000 secs, 1124 kb]

test 10: test ok [0.000 secs, 1124 kb]

test 11: test ok [0.000 secs, 1124 kb]

test 12: test ok [0.000 secs, 1124 kb]

test 13: test ok [0.000 secs, 1124 kb]

alltests ok.

**

var f:array [0..100001] of qword;

a:array [0..1001] of longint;

m,n,i,j,k:longint;

begin

assign(input,'money.in');

assign(output,'money.out');

reset(input);

rewrite(output);

readln(n,m);

for i:=1

to n do

read(a[i]);

fillchar(f,sizeof(f),0); f[0]:=1;

for i:=1

to n do

for j:=a[i] to m do

f[j]:=f[j]+f[j-a[i]];

writeln(f[m]);

close(input);

close(output);

end.

貨幣系統 (完全揹包)

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

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

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

完全揹包 NOIP2018 貨幣系統

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