直接枚举所有情况,即每个愿望选择做或是不做,拿了60分
代码很短,有看不懂的地方可以问我 orz
#include<iostream>
using namespace std;
int n,m,t,maxn;
int mi[101],ti[101];
void one(int l,int mo,int tm,int c){
if(l==n+1){
maxn=max(maxn,c);
return ;
}
if(mo+mi[l]<=m&&tm+ti[l]<=t)
one(l+1,mo+mi[l],tm+ti[l],c+1);
else maxn=max(maxn,c);
one(l+1,mo,tm,c);
}
int main()
{
scanf("%d%d%d",&n,&m,&t);
for(int i=1;i<=n;i++)
scanf("%d%d",&mi[i],&ti[i]);
one(1,0,0,0);
printf("%d",maxn);
return 0;
}