解題心得
price放幣值種類,大小順序不重要。
每次單看一種種類的幣值,把1~c的目標金額都算過一次,如果新的(也就是扣掉自己的那個金額再加一)比現在需要的硬幣少,就更新。
程式碼
#include <iostream>
using namespace std;
int price[11] = { 0 }, money[1001] = { 0 };
int main()
{
int c, n;
while (cin >> c >> n)
{
for (int i = 0; i < n; i++)
cin >> price[i];
for (int i = 1; i < 1001; i++)
money[i] = 1000000;
for (int i = 0; i < n; i++)
{
for (int j = price[i]; j <= c; j++)
{
money[j] = min(money[j], money[j - price[i]] + 1);
}
}
if (money[c] != 1000000) cout << money[c] << endl;
}
return 0;
}
沒有留言:
張貼留言