01揹包問題
#include<cstdio>
#include<cstring>
using namespace std;
int maxs(int x,int y)
{
if(x>y)
return x;
else return y;
}
int main()
{
int T,N;
scanf("%d %d",&T,&N);
int F[N+5][T+5];
int time[N+5],value[N+5];
for(int i=1;i<=N;i++)
{
scanf("%d %d",&time[i],&value[i]);
}
memset(F,0,sizeof(F));
for(int i=1;i<=N;i++)
{
for(int j=1;j<=T;j++)
{
if(time[i]<=j)
{
F[i][j]=maxs(F[i-1][j],F[i-1][j-time[i]]+value[i]);
}
else F[i][j]=F[i-1][j];
}
}
printf("%d\n",F[N][T]);
}