dp
2026-08-12 01:49:00
发布于:广东
2阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int main() {
int v, n;
cin >> v >> n;
int a[31];
for (int i = 0; i < n; i++)
cin >> a[i];
int dp[n + 1][v + 1];
dp[0][0] = 0;
for (int j = 1; j <= v; j++) {
dp[0][j] = INT_MAX;
}
for (int i = 1; i <= n; i++) {
dp[i][0] = 0;
for (int j = 1; j <= v; j++) {
if (j >= a[i - 1]) {
dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - a[i - 1]]);
} else {
dp[i][j] = dp[i - 1][j];
}
}
}
int ans = INT_MAX;
for (int j = 0; j <= v; j++) {
if (dp[n][j] != INT_MAX) {
ans = min(ans, v - j);
}
}
cout << ans << endl;
return 0;
}
这里空空如也







有帮助,赞一个