怎么回事,先不考虑前面尽量小方案的问题
#include <string>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 2e3 + 10;
string ans[maxn][maxn];
int n, m, v, a[maxn], b[maxn], c[maxn], dp[maxn][maxn];
int main() {
scanf("%d %d %d", &m, &v, &n);
for (int i = 1; i <= n; i++) {
scanf("%d %d %d", a + i, b + i, c + i);
for (int j = m; j >= a[i]; j--) {
for (int k = v; k >= b[i]; k--) {
if (dp[j - a[i]][k - b[i]] + c[i] > dp[j][k]) {
ans[j][k] += to_string(i) + " ";
dp[j][k] = dp[j - a[i]][k - b[i]] + c[i];
}
}
}
}
printf("%d\n", dp[m][v]);
cout << ans[m][v] << endl;
return 0;
}