1. 程式人生 > >貨幣系統 Money Systems

貨幣系統 Money Systems

san 可用 pla define ID 不同 hid sys namespace

技術分享圖片
母牛們不但創建了它們自己的政府而且選擇了建立了自己的貨幣系統。由於它們特殊的思考方式,它們對貨幣的數值感到好奇。

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

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

舉例來說, 使用一個貨幣系統 {1,2,5,10,...}產生 18單位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它。 寫一個程序來計算有多少種方法用給定的貨幣系統來構造一定數量的面值。保證總數將會適合long long (C/C++) 和 Int64 (Free Pascal),即在0 到2^63
-1之間。 輸入輸出格式 輸入格式: 貨幣系統中貨幣的種類數目是 V (1<=V<=25)。要構造的數量錢是 N (1<= N<=10,000)。 第一行: 二個整數,V 和 N 。 第二行: 可用的貨幣的面值 。 輸出格式: 輸出格式: 單獨的一行包含那個可能的用這v種硬幣湊足n單位貨幣的方案數。 輸入輸出樣例 輸入樣例#13 10 1 2 5 輸出樣例#110 說明 翻譯來自NOCOW USACO 2.3
題目描述

裸的完全背包求方案數,記得開LL

不然會炸

技術分享圖片
 1 #include<bits/stdc++.h>
 2 #define DB double
 3
#define ll long long 4 using namespace std; 5 int V,n,a[30]; 6 ll f[1000000]; 7 int main() 8 { 9 scanf("%d%d",&n,&V); 10 for(int i=1;i<=n;++i) scanf("%d",&a[i]); 11 f[0]=1; 12 for(int i=1;i<=n;++i) 13 for(int j=a[i];j<=V;++j) 14 f[j]+=f[j-a[i]]; 15 cout<<f[V];
16 return 0; 17 }
View Code

貨幣系統 Money Systems