思路
二维费用背包裸题,注意读入的顺序,上下并不一样。
代码
#include <bits/stdc++.h>
using namespace std;
int f[210][210];
int main(){
int n, m, t, ans = 0;
scanf("%d%d%d", &n, &m, &t);
for(int i = 1; i <= n; i ++){
int a, b;
scanf("%d%d", &a, &b), swap(a,b);
for(int j = m; j >= a; j --)
for(int k = t; k >= b; k --)
f[j][k] = max(f[j][k], f[j-a][k-b]+1);
}
for(int i = 0; i <= m; i ++)
for(int j = 0; j <= t; j ++)
if(f[i][j] > ans) ans = f[i][j];
printf("%d", ans);
return 0;
}