hdu 1171 背包

来源:互联网 发布:php 一键生成工具 编辑:程序博客网 时间:2024/06/18 09:04

多重背包

我擦,TLE ,N次,最后是因为自己读题忽略一个条件,遇见负数就终止

结果自己根据用例,判断成遇见-1了,雪崩。!!

总结一下,如果TLE 原因可能如下: 1,程序确实超时, 2. 程序结束条件不对,检查跳出循环的条件。
套用模板
while(scanf(“%d”)!=EOF){ if(n<0) break;}

01背包

for(int i=1;i<=n;i++)    for(int v=V;v>=value[i];v--{        dp[v]=max(dp[v],dp[v-c[i]]+value[i];    }

完全背包

for(int i=1;i<=n;i++)    for(int v=value[i];v<=V;v--{        dp[v]=max(dp[v],dp[v-c[i]]+value[i];    }

多重背包

for(int i=1;i<=n;i++)    for(int v=value[i];v<=V;v--{        for(int k=0;k<=h[i]&&k*c[i]<=v;k++)            dp[v]=max(dp[v],dp[v-k*c[i]]+k*value[i];    }

还有一种多重背包解法: //TODO 明天更

这里写代码片
原创粉丝点击