题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1881
代码如下:
超时代吗:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
struct node
{
int H;
int L;
int T;
}N[34];
bool cmp(node a,node b)
{
return a.T<b.T; //按终止时间从小到大排序
}
int main()
{
int dp[1000];
int n;
while(scanf("%d",&n)!=EOF&&n+1)
{
for(int i=1;i<=n;i++)
scanf("%d%d%d",&N[i].H,&N[i].L,&N[i].T);
sort(N+1,N+1+n,cmp);
int t=N[n].T;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++) //01背包的思想
for(int j=t;j>=N[i].L;j--)
dp[j]=dp[j]<dp[j-N[i].L]+N[i].H?dp[j-N[i].L]+N[i].H:dp[j];
printf("%d\n",dp[t]);
}
return 0;
}