nyoj995硬幣找零(dp完全揹包)

2022-08-18 20:54:13 字數 1230 閱讀 4944

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:3

描述在現實生活中,我們經常遇到硬幣找零的問題,例如,在發工資時,財務人員就需要計算最少的找零硬幣數,以便他們能從銀行拿回最少的硬幣數,並保證能用這些硬幣發工資。

我們應該注意到,人民幣的硬幣系統是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,

0.02,0.01 元,採用這些硬幣我們可以對任何乙個工資數用貪心演算法求出其最少硬幣數。 

但不幸的是: 我們可能沒有這樣一種好的硬幣系統, 因此用貪心演算法不能求出最少的硬幣數,甚至有些金錢總數還不能用這些硬幣找零。例如,如果硬幣系統是 40,30,25 元,那麼 37元就不能用這些硬幣找零;95 元的最少找零硬幣數是 3。又如,硬幣系統是 10,7,5,1元,那麼 12 元用貪心法得到的硬幣數為 3,而最少硬幣數是 2。 

你的任務就是:對於任意的硬幣系統和乙個金錢數,請你程式設計求出最少的找零硬幣數;

如果不能用這些硬幣找零,請給出一種找零方法,使剩下的錢最少。 

輸入輸入資料: 

第 1 行,為 n 和 t,其中 1≤n≤50 為硬幣系統中不同硬幣數;1≤t≤100000 為需要用硬幣找零的總數。 

第 2 行為 n 個數值不大於 65535 的正整數,它們是硬幣系統中各硬幣的面值。

當n,t同時為0時結束。

輸出輸出資料: 

如 t 能被硬幣系統中的硬幣找零,請輸出最少的找零硬幣數。 

如 t 不能被硬幣系統中的硬幣找零,請輸出剩下錢數最少的找零方案中的最少硬幣數。

樣例輸入

4 12

10 7 5 1

樣例輸出

2
#include#include

#include

using

namespace

std;

#define maxn 0x3f3f3f3f

int dp[100005

];int w[55

];int

n,m;

void

solve()

}for(int i=m;i>=0;i--)

}printf(

"%d\n

",dp[m]);

}int

main()

solve();

}return0;

}

nyoj 995 硬幣找零

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

nyoj 995 硬幣找零

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

nyoj 995 硬幣找零

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