時間限制: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//一維dp
ac**:
#include #include #include #include using namespace std ;int dp[100010] ;
int t,n ,a ;
int main()
int i;
for(i = t; dp[i] >=1e9; i--);
cout << dp[i] << endl;
}return 0 ;
}
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...
NYOJ995硬幣找零 簡單dp
1 2 題意 給你不同面額的硬幣 每種硬幣無限多 需要找零的面值是t,用這些硬幣進行找零,3如果t恰好能被找零,輸出最少需要的硬幣的數目!否則請輸出剩下錢數最少的找零方案中的最少硬幣數!45 思路 轉換成完全揹包的問題!6 7 include8 include9 include10 include1...