NYOJ苹果,典型01背包入门
二维数组ac
#include<iostream>
#include<algorithm>
using namespace std;
int dp[1002][1002];
int main()
{int i,j,k,m,n,V,c[1002],v[1002];
while(cin>>n>>V&&n!=0&&V!=0)
{
for(i=0;i<n;i++)
cin>>c[i]>>v[i];
for(j=0;j<=V;j++)
dp[0][j]=0;
for(i=0;i<n;i++)
for(j=0;j<=V;j++)
if(j<c[i])dp[i+1][j]=dp[i][j];
else dp[i+1][j]=max(dp[i][j],dp[i][j-c[i]]+v[i]);
cout<<dp[n][V]<<endl;
}
return 0;
}