第一题的代码下边这样能过不   当时没写出来 int main() { int X, N; cin >> X >> N; vector<vector<int>> food(N, vector<int>(3, 0)); for (int i = 0; i < N; ++i) { cin >> food[i][0] >> food[i][1] >> food[i][2]; } // 01背包问题 dp[x]表示选取X元零食可达到的最大喜爱度 vector<int> dp(X + 1, 0); for (int i = 0; i <= X; i++) { for (int j = 0; j < N; ++j) { for (int k = 1; k <= food[j][1]; k++) { if (i - k * food[j][0] >= 0) { dp[i] = max(dp[i], dp[i - k * food[j][0]] + k * food[j][2]); } } } } cout << dp[X]; return 0; }