1 solutions
-
0
C :
#include "stdio.h" #include "string.h" int n,m; int a[25],b[25],f[30001]; int main() { int i,j; while(scanf("%d%d",&m,&n)!=EOF) { memset(f,0,sizeof(f)); for(i=0;i<n;i++) scanf("%d%d",&a[i],&b[i]); for(i=0;i<n;i++) { for(j=m;j>=a[i];j--) if(f[j-a[i]]+a[i]*b[i]>f[j]) f[j]=f[j-a[i]]+a[i]*b[i]; } printf("%d\n",f[m]); } return 0; }C++ :
#include<iostream> #include<cstdio> using namespace std; int i[31],w[31],c[30001]; int main() { //freopen("test.in","r",stdin); int m,n; cin>>m>>n; for (int j=1;j<=n;j++) cin>>w[j]>>i[j]; for (int j=1;j<=n;j++) for (int k=m;k>=w[j];k--) if(c[k]<c[k-w[j]]+i[j]*w[j]) c[k]=c[k-w[j]]+i[j]*w[j]; cout<<c[m]; return 0; }Pascal :
var n, w, u, v, i, j, ans : longint; f : array[0 .. 30010]of longint; begin readln(w, n); for i := 1 to n do begin read(u, v); for j := w-u downto 0 do begin if f[j]+u*v>f[j+u] then f[j+u] := f[j]+u*v; if f[j+u] > ans then ans := f[j+u]; end; end; writeln(ans); end.
- 1
Information
- ID
- 16464
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By