Sample Input
70 3 71 100 69 1 1 2
Sample Output
3
典型01背包问题,只是把背包容量换成了采集时间.所以废话不多说.直接上代码
#include "stdio.h"
#include "stdlib.h"
#include "iostream"
#include "algorithm"
using namespace std;
int main ()
{
int t,m;
scanf ("%d %d",&t,&m);
int time[1001],v[1003];
int i,j;
for (i=1;i<=m;i++)
{
scanf ("%d %d",&time[i],&v[i]);
}
int value[101][1001];
for (i=0;i<=m;i++)
value[i][0]=0;
for (i=0;i<=t;i++)
value[0][i]=0;
for (i=1;i<=m;i++)
{
for (j=1;j<=t;j++)
{
if (time[i]>j)
{
value[i][j]=value[i-1][j];
}
else if (value[i-1][j-time[i]]+v[i]>value[i-1][j])
{
value[i][j]=value[i-1][j-time[i]]+v[i];
}
else
{
value[i][j]=value[i-1][j];
}
}
}
printf ("%d\n",value[m][t]);
return 0;
}