1 条题解
-
0
C :
#include<stdio.h> struct Goods{ int v;//价格 int p;//重要度 }list[25]; int max(int a,int b){ return a>b?a:b; } int dp[30000]; int main(){ int i,j,N,m; scanf("%d%d",&N,&m); for(i=1;i<=m;i++){ scanf("%d%d",&list[i].v,&list[i].p); } for(j=0;j<N;j++){ dp[j]=0; } for(i=1;i<=m;i++){ for(j=N;j>list[i].v;j--){ dp[j]=max(dp[j],dp[j-list[i].v]+list[i].p*list[i].v); } } printf("%d",dp[N]); return 0; }
C++ :
#include<iostream> #include<string> #include<cstdlib> #include<cstdio> #include<cstring> using namespace std; int a[20000],b[20000],c[40000]; int main() { int i,m,n,j,k; cin>>m>>n; for (i=1;i<=n;++i) cin>>a[i]>>b[i]; for (i=1;i<=n;++i) for (j=m;j>=a[i];--j) if (c[j-a[i]]+a[i]*b[i]>c[j]) c[j]=c[j-a[i]]+a[i]*b[i]; cout<<c[m]; return 0; }
Pascal :
var i,j,k,n,t:longint; v,p:array[0..25] of longint; f:array[0..100000] of longint; function max(a,b:longint):longint; begin if a>b then max:=a else max:=b; end; begin // assign(input,'happy.in'); //r/eset(input); // assign(output,'happy.out'); //rewrite(output); readln(k,n); for i:=1 to n do readln(v[i],p[i]); fillchar(f,sizeof(f),0); for i:=1 to n do for j:=k downto v[i] do f[j]:=max(f[j],f[j-v[i]]+v[i]*p[i]); writeln(f[k]); //close(input);close(output); end.
- 1
信息
- ID
- 1780
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者