题目传送门
解题思路:
一个二维限制的背包,f[i][j]表示i块钱j个时间能实现的最大愿望数.
AC代码:
1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 int n,m,t,jq[101],sj[101],f[201][201]; 7 8 int main() { 9 scanf("%d%d%d",&n,&m,&t); 10 for(int i = 1;i <= n; i++) 11 scanf("%d%d",&jq[i],&sj[i]); 12 for(int i = 1;i <= n; i++) 13 for(int j = m;j >= jq[i]; j--) 14 for(int k = t;k >= sj[i]; k--) 15 f[j][k] = max(f[j][k],f[j-jq[i]][k-sj[i]] + 1); 16 printf("%d",f[m][t]); 17 return 0; 18 }