yiming94 2009-01-28 19:32:00
点我顶贴
收藏
删除
#include <stdio.h>
int main()
{
long f[1080001]={0},n,t;
long w1,t1,w2,t2;
long i,j;
scanf("%ld%ld",&n,&t);
for(i=0;i<n;i++)
{
scanf("%ld%ld%ld%ld",&w1,&t1,&w2,&t2);
for(j=t;j>=t1 || j>=t2;j--)
{
if(f[j-t1]+w1>f[j] && j>=t1)
f[j]=f[j-t1]+w1;
if(f[j-t2]+w2>f[j] && j>=t2)
f[j]=f[j-t2]+w2;
}
}
printf("%ld",f[t]);
return(0);
}
#1 飞雪天涯@2008-10-19 08:30:00
7044
回复
删除
把if语句的&&左右互换(即if(j>=t1&&dp[j-t1]+w1>dp[j]) dp[j]=dp[j-t1]+w1;if(j>=t2&&dp[j-t2]+w2>dp[j]) dp[j]=dp[j-t2]+w2;)