题目
代码:
#include <stdio.h>
#include <stdlib.h>
struct node{
int Pi;
int Mi;
}Dog[110];//为什么将110改为100,就不行
int max(int a,int b){
if(a>b)
{
return a;
}
else
return b;
}
int main()
{
int F[110][1008];
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=1;i<=n;i++)
{
scanf("%d%d",&Dog[i].Pi,&Dog[i].Mi);
}
for(int i=0;i<m;i++)
{
F[0][i]=0;
}
for(int i=0;i<n;i++)
{
F[i][0]=0;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(j-Dog[i].Pi>=0)
{
F[i][j]=max(F[i-1][j],F[i-1][j-Dog[i].Pi]+Dog[i].Mi);
}
else
{
F[i][j]=F[i-1][j];
}
}
}
printf("%d\n",F[n][m]);
}
return 0;
}