題意:
有5種硬幣1,5,10,25,50,;現在隨意的給出乙個價錢,問你有幾種組合方式!
輸入11
輸出41+...+1(10個),5+(6*1),5+5+1, 10+1(共4種)
思路;滿足完全揹包思想,狀態轉移方程:dp[i+num[k]] += dp[i](dp[i]為組合成i的不重複種數,num[k]分別為1,5,10,25,50)
不能合在一起轉移
,否則會導致重複!
**:#include #include#include#include#include#includeusing namespace std;
int coin[5]=;
int dp[10000];
int main()
{ int n;
while(cin>>n)
{fill(dp,dp+n+1,0);
dp[0]=1;
for(int i=0;i<5;i++)
for(int j=0;j<=n;j++)
dp[j+coin[i]]+=dp[j];
cout<
UVA 674 硬幣問題(完全揹包 列舉)
題意 給定金額n,有50,25,10,5,1這五種面值的錢,問共有多少種不同的找法 假設最少存在一種找法 這題我想了很久,都沒有找到合適的狀態轉移方程,最後看了別人寫的,又體會了半天,才算明白。分析 這題,寫不對原因在於,很容易就重複計算了。例如 11 中的 11111,5,111111 與 111...
UVA 674 揹包之殤
題目位址 本來以為對於簡單的揹包已經了解了,可還是在這道題上掛了彩。自己寫了兩種 第一種是對每類錢,列舉其拿的張數 dp i j 累加dp i 1 j k money 我覺得8000 的資料,n3 也無所謂的,交上去t了。俗語雲 t乃a之母 起碼說明演算法是正確的,於是開始想優化的方法。想起來 前幾...
uva10465 完全揹包
題目大意 乙個人可以花m分鐘吃一種漢堡,可以花n分鐘吃另外一種漢堡,問在t時間內最多可以吃幾個漢堡 應該盡可能的不浪費時間,如果真的非得浪費時間就用這些時間喝啤酒。輸出喝啤酒的時間。思路 揹包 貪心 完全揹包 include using namespace std include include i...