1 条题解
-
0
C :
#include<stdio.h> int f[1001]={0}; int w[1001],c[1001]; int N=0,M=0; int main() { scanf("%d%d",&M,&N); for(int i=1;i<=N;++i) { scanf("%d%d",&w[i],&c[i]); } for(int i=1;i<=N;++i) { for(int j=M;j>=w[i];--j) { if(f[j-w[i]]+c[i]>f[j]) { f[j]=f[j-w[i]]+c[i]; } } } printf("%d",f[M]); return 0; }
C++ :
#include <cstdio> using namespace std; int m,n; int w[1001],c[1001]; int f[1001]; int main() { scanf("%d%d",&m,&n); for (int i=1;i<=n;i++) { scanf("%d%d",&w[i],&c[i]); } for(int i=1;i<=n;i++) for(int v=m;v>=w[i];v--) { if(f[v-w[i]]+c[i]>f[v]) { f[v]=f[v-w[i]]+c[i]; } } printf("%d\n",f[m]); return 0; }
Pascal :
var n, w, u, v, i, j : longint; f : array[0 .. 1010]of longint; begin readln(w, n); for i := 1 to n do begin read(u, v); for j := w-u downto 0 do if f[j]+v>f[j+u] then f[j+u] := f[j]+v; end; j := 0; for i := 1 to w do if f[i] > j then j := f[i]; writeln(j); end.
- 1
信息
- ID
- 785
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者