BYSBZ 2748(音量调节-01背包)

2014-11-24 09:28:08 · 作者: · 浏览: 0

一定要读题啊!!
这题说的是——每次一定换,没说前后不能到一个音量。

[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define MAXN (50 + 10)
#define MAXMAXLEVEL (1000+1)
int n,start,maxlevel,a[MAXN];
bool f[MAXN][MAXMAXLEVEL];
int main()
{
// freopen("changingsounds.in","r",stdin);
// freopen("changingsounds.out","w",stdout);

memset(f,0,sizeof(f));

scanf("%d%d%d",&n,&start,&maxlevel);
for (int i=1;i<=n;i++) scanf("%d",&a[i]);
f[0][start]=1;
for (int i=1;i<=n;i++)
for (int j=0;j<=maxlevel;j++)
{
f[i][j]=j-a[i]>=0 f[i-1][j-a[i]] : 0;
f[i][j]=j+a[i]<=maxlevel f[i-1][j+a[i]]||f[i][j] : f[i][j];



}
int ans=maxlevel;
while (ans>=0&&!f[n][ans]) ans--;
cout<



// while (1);
return 0;
}