首页 > 学院 > 开发设计 > 正文

动态规划-多重背包问题-二进制转换

2019-11-08 02:58:53
字体:
来源:转载
供稿:网友

其中的cu为单个物品的开销cost,vu为单个物品的价值value,nu为物品个数。

void divide(int cu,int vu,int nu){ int i=1; while(nu-i>=0) { cost[++n]=cu*i; value[n]=vu*i; nu-=i; i<<=1; } if(nu) { cost[++n]=cu*nu; value[n]=vu*nu; }}

按这种方式生成的物品能够等效于一个一个地放物品,并且时间复杂度从O(N)降为O(logN)。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表