题解 GDFZOJ 【649】 邮票问题
看原题戳这儿
一、审题
给定一个信封,最多只允许粘贴
很明显,这是一道
二、做题
众所周知,
我们先定义一个状态
三、代码
#include<bits/stdc++.h>
using namespace std;
int a,b,i,j,ans;
int f[2000000];
int main()
{
scanf("%d%d",&a,&b);
for(i=1;i<=2000000;i++) f[i]=1e9;
f[0]=0;
for (i=1;i<=b;i++)
{
int x;
scanf("%d",&x);
for(j=x;j<=2000000;j++)
if(f[j-x]+1<=a) f[j]=min(f[j],f[j-x]+1);
}
ans=0;
for(i=1;i<=2000000;i++)
if(f[i]==1e9)
{
ans=i-1;
break;
}
printf("MAX=%d\n",ans);
return 0;
}