有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。 如,有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張...