01
myr0721
·
·
题解
#include<bits/stdc++.h>
using namespace std;
int m=0,n=0;
int wight[1003],value[1003];
int dp[1000][1000];
int ans=0;
int main()
{
scanf("%d %d",&m,&n);
for(int i=1;i<=n;i++)
{
scanf("%d %d",&wight[i],&value[i]);
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
dp[i][j]=dp[i-1][j];
//printf("\n------%d\n",dp[i][j]);
if(j>=wight[i])
{
dp[i][j]=max(dp[i][j],dp[i-1][j-wight[i]]+value[i]);
//printf("\n*******%d\n",dp[i][j]);
}
}
}
for(int j=0;j<=m;j++)
{
ans=max(ans,dp[n][j]);
}
/*for(int i=1;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
printf("%d ",dp[i][j]);
}
printf("\n");
}*/
printf("%d\n",ans);
return 0;
}