最小郵票數

2021-09-12 14:18:47 字數 911 閱讀 4668

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

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

輸入:

10

51 3 3 3 4

輸出:

思路:動態規劃,把郵票的價值設為1,即在裝滿的條件下,求價值最小的揹包問題

dp[i][v]表示前i件物品恰好放入容量為v的揹包中所能獲得的最小價值

狀態轉移方程:dp[v]=min(dp[v],dp[v-w[i]]+c[i]);

邊界:dp[0]=0,dp[v]=inf(v>0)

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

const int maxn=110;

const int inf=100000000;

int w[maxn],c[maxn],dp[maxn];

int m,n;

int min(int a,int b)

int main()

dp[0]=0;

for(i=1;i<=m;i++)

for(i=1;i<=n;i++)

} int min=dp[m];

if(min<=n&&min>0)else printf("0\n");

return 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張...