1 solutions
-
0
C :
#include<stdio.h> #include<string.h> int main() { int w[1001],c[1001],dp[1001]; int n,v,i,j; while(scanf("%d%d",&n,&v)==2) { if(n==0&&v==0) break; memset(dp,0,sizeof(dp)); for(i=0; i<n; ++i) scanf("%d%d",&c[i],&w[i]); for(i=0; i<n; ++i) for(j=v; j>=c[i]; --j) { if(dp[j]<dp[j-c[i]]+w[i]) dp[j]=dp[j-c[i]]+w[i]; } printf("%d\n",dp[v]); } }
C++ :
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<cstdlib> using namespace std; int f[1010][1010]; int weight[1010],cost[1010]; int main() { int n,v,i,j; while(cin>>n>>v) { if(n == 0 && v == 0) break; memset(f,0,sizeof(f)); for(i = 1; i <= n; i++) cin>>weight[i]>>cost[i]; for(i = 1; i <= n; i++) { for(j = 0; j <= v; j++) { f[i][j] = f[i-1][j]; if(j>=weight[i]) f[i][j] = max(f[i-1][j],f[i-1][j-weight[i]] + cost[i]); } } cout<<f[n][v]<<endl; } return 0; }
- 1
Information
- ID
- 745
- Time
- 3000ms
- Memory
- 64MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By