二维背包,加一个维度就好,这个时候就体现出来一维数组做背包多重要了,三维数组什么的,绝对要mle
#include#include #include #include #include using namespace std; int max(int a, int b){ return a > b ? a : b; } int main() { int n, m, t; cin >> n >> m >> t; int money[201] = { 0 }; int time[201] = { 0 }; for (int i = 0; i < n; i++){ cin >> money[i] >> time[i]; } int pos[201][201] = { 0 }; for (int i = 0; i < n; i++){ for (int j = m; j >= money[i]; j--){ for (int k = t; k >= time[i]; k--){ pos[j][k] = max(pos[j][k], pos[j - money[i]][k - time[i]] + 1); } } } cout << pos[m][t] << endl; return 0; }