| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 92653 | sh25_shenpy | 0-1背包问题(回溯法) | C++ | 无测评数据 | 0 MS | 0 KB | 609 | 2026-07-17 11:08:43 |
#include <cstdio> #include <cstring> #define max(a, b) (((a) > (b)) ? (a) : (b)) int dp[1010][1010]; int w[1010]; int c[1010]; int N, C; void solve() { scanf("%d %d", &N, &C); for(int i = 1; i <= N; i++) scanf("%d", &w[i]); for(int i = 1; i <= N; i++) scanf("%d", &c[i]); for(int i = 1; i <= N; i++) { for(int j = 0; j <= C; j++) { if(j >= c[i]) dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - c[i]] + w[i]); else dp[i][j] = dp[i - 1][j]; } } printf("%d\n", dp[N][C]); } int main() { solve(); return 0; }