最小郵票數

2022-09-20 06:15:11 字數 1018 閱讀 5752

有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。     如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票:3分、3分、4分即可。

有多組資料,對於每組資料,首先是要求湊成的郵票總值m,m<100。然後是乙個數n,n〈20,表示有n張郵票。接下來是n個正整數,分別表示這n張郵票的面值,且以公升序排列。
對於每組資料,能夠湊成總值m的最少郵票張數。若無解,輸出0。

起初的想法類似於先從小到大排序,然後每次使用面額最大的郵票,類似於count[sum] = count[sum - maxnumber] + 1。 發現ac不過,然後突然想到如果面值是5,8,9。要湊總數13的話,那我肯定錯了。

仔細一想,其實就是動態規劃。

給出錯誤**:

#includeusing

namespace

std;

int assemble(int number, int arr, int

rear)

else

if(number < 0

)

while(arr[rear] >number)

rear--;

return assemble(number - arr[rear + 1], arr, rear) + 1;}

intmain()

intout = assemble(m, arr, n - 1

);

if(out >= 20

)

else

}}

再給出ac**:

#include#include

#define mmax 27;

using

namespace

std;

int min(int a,int b)

intmain()}}

if(dp[m]==mmax) cout<<0

}

最小郵票數

時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 1680 解決 558 題目描述 有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票 3分 3分 4分即可。輸入 有多組資料,對於每組資料,首先是要求湊成的...

最小郵票數

題目描述 有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票 3分 3分 4分即可。輸入 有多組資料,對於每組資料,首先是要求湊成的郵票總值m,m 100。然後是乙個數n,n 20,表示有n張郵票。接下來是n個正整數...

最小郵票數

有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票 3分 3分 4分即可。有多組資料,對於每組資料,首先是要求湊成的郵票總值m,m 100。然後是乙個數n,n 20,表示有n張郵票。接下來是n個正整數,分別表示這n張...