给大家推荐个靠谱的公众号程序员探索之路,大家一起加油
#include<stdio.h>
#include<string.h>
int max(int k,int m)
{return k>m?k:m;}
int c[1001],w[1001],a[1001][1001]={0};
main()
{
int n,v;
while(scanf("%d %d",&n,&v),n&&v)
{
for(int i=1;i<=n;i++)
scanf("%d %d",&c[i],&w[i]);
for(int i=1;i<=n;i++)
for(int j=1;j<=v;j++)
{
if(j<c[i]) a[i][j]=a[i-1][j];//如果不存储就是前i-1存储j
else
a[i][j]=max(a[i-1][j],a[i-1][j-c[i]]+w[i]);//如果存储就是前i-1存储j-c[i]的问题
}
printf("%d\n",a[n][v]);
}
}