1 条题解
-
0
C :
#include "stdio.h" int m,n,t; int w[30],v[30],p[30],V[201][11]; int main() { int i,j,k,l; int max; scanf("%d%d%d",&m,&n,&t); for(i=0;i<n;i++) scanf("%d%d%d",&w[i],&v[i],&p[i]); for(k=1;k<=t;k++) { for(i=0;i<n;i++) if(p[i]==k) { for(j=m;j>=w[i];j--) { for(l=0;l<k;l++) if(V[j][k]<V[j-w[i]][l]+v[i]) V[j][k]=V[j-w[i]][l]+v[i]; } } } max=0; for(i=1;i<=t;i++) if(max<V[m][i]) max=V[m][i]; printf("%d\n",max); return 0; }
C++ :
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int v,n,t,p; int f[201]={0},w[40],c[40],a[40][40]={0}; int main() { cin>>v>>n>>t; for(int i=1;i<=n;i++) { cin>>w[i]>>c[i]>>p; a[p][++a[p][0]]=i; } for(int i=1;i<=t;i++) for(int j=v;j>=0;j--) for(int k=1;k<=a[i][0];k++) if(j>=w[a[i][k]] && f[j]<f[j-w[a[i][k]]]+c[a[i][k]]) f[j]=f[j-w[a[i][k]]]+c[a[i][k]]; cout<<f[v]<<endl; return 0; }
Pascal :
program zxt; var f,a,c,w:array [0..200] of integer; i,j,k,m,n,t:integer; function max(x,y:integer):integer; begin if x>y then max:=x else max:=y; end; begin readln(m,n,t); for i:=1 to n do readln(c[i],w[i],a[i]); for k:=1 to t do for j:=m downto 1 do for i:=1 to n do if a[i]=k then if j>=c[i] then f[j]:=max(f[j],f[j-c[i]]+w[i]); writeln(f[m]); end.
- 1
信息
- ID
- 783
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者