其中的cu為單個物品的開銷cost,vu為單個物品的價值value,nu為物品個數(shù)。
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)。
新聞熱點
疑難解答