1 条题解
-
0
C :
#include <stdio.h> #include <stdlib.h> #define maxn 30 #define maxv 3010 #define max(A,B) ((A)<(B))?(B):(A) typedef struct{ int price, value; }Node; Node item[maxn]; int dp[maxv]; int main() { int N, M; while(scanf("%d%d",&N, &M) != EOF) { for(int i = 1;i <= M; i++)scanf("%d%d",&item[i].price,&item[i].value); for(int i = 0;i <= N; i++)dp[i]=0; for(int i=1; i<= M; i++){ for(int j = N;j >= item[i].price; j--){ dp[j]=max(dp[j],dp[j-item[i].price]+item[i].price*item[i].value); } } printf("%d\n",dp[N]); } return 0; }
C++ :
#include <bits/stdc++.h> using namespace std; int n, m; int v[30], p[30], f[30009]; int main() { cin >> n >> m; for (int i = 1; i <= m; i ++) cin >> v[i] >> p[i]; for (int i = 1; i <= m; i ++) { for (int j = n; j >= v[i]; j --) { f[j] = max(f[j], f[j - v[i]] + v[i] * p[i]); } } cout << f[n]; return 0; }
- 1
信息
- ID
- 2579
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者