codevs1297 硬幣 完全揹包

2022-05-20 14:03:13 字數 716 閱讀 9949

題目大意:給定 n 種不同種類的硬幣,每種硬幣的重量範圍在乙個可變區間內,但是價值恆定,求給定乙個重量 w,求有多少種面值不同的組合方式。

題解:如果硬幣的重量恆定,那麼就是一道裸的完全揹包問題。因此,可以先將給定的硬幣拆分成多個重量不同的硬幣。

總的來說,這道題所求的是目標狀態有多少種可能的解,而不是最優解,因此有以下兩種方式。

解法1:在每個狀態中維護乙個 \(stl--set\),用來儲存到達該狀態所有可能的值,最後輸出集合的大小即可,常數較大。

解法2:將問題轉化為判定性問題,即:額外增加一維用來表示當前可能的價值。

** 1 如下

#include using namespace std;

int w,n,ans,val[300],cost[300],tot;

setdp[110];

void read_and_parse()

}void solve()

int main()

** 2 如下

#include using namespace std;

int w,n,ans,val[300],cost[300],tot,dp[110][2510];

void read_and_parse()

}void solve()

int main()

硬幣拼湊(01揹包和完全揹包)

有n1 n2種面值的硬幣,其中前n1種為普通幣,可以取任意枚,後n2種為紀念幣,每種最多只能取一枚,每種硬幣有乙個面值,問能用多少種方法拼出m的面值?輸入描述 第一行輸入三個整數n1,n2,m n1,n2 1000 m 100000 第二行輸入n1個整數表示普通幣的面值 第三行輸入n2個整數表示紀念...

nyoj995硬幣找零完全揹包

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在現實生活中,我們經常遇到硬幣找零的問題,例如,在發工資時,財務人員就需要計 算最少的找零硬幣數,以便他們能從銀行拿回最少的硬幣數,並保證能用這些硬幣發工資。我們應該注意到,人民幣的硬幣系統是 100,50,20,10,5,2,...

NYOJ 995 硬幣找零 完全揹包

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在現實生活中,我們經常遇到硬幣找零的問題,例如,在發工資時,財務人員就需要計 算最少的找零硬幣數,以便他們能從銀行拿回最少的硬幣數,並保證能用這些硬幣發工資。我們應該注意到,人民幣的硬幣系統是 100,50,20,10,5,2,...