例如:
当前有一种物品件数为100
那么100=1+2+4+8+16+32+37
所以可以把背包分成以上7个小背包,然后做一次01背包。
原理:
根据二进制的性质,可以知道1 2 4 8 16 32可以构成1~63间任意的一个数,
那么再加上37,就变成38~100间的数,
和原来的1~63一合并,就变成1~100了。
例如:
当前有一种物品件数为100
那么100=1+2+4+8+16+32+37
所以可以把背包分成以上7个小背包,然后做一次01背包。
原理:
根据二进制的性质,可以知道1 2 4 8 16 32可以构成1~63间任意的一个数,
那么再加上37,就变成38~100间的数,
和原来的1~63一合并,就变成1~100了。