1.
- 分段之前,固定是每8位二进制截取为一个像素点,12*8
- 分段之后,我们就需要知道第i段是多少位截取一个像素点,即
像素点的存储位数
(最多8位,所以需要3位) - 还需要知道从什么位置开始像素点的存储位数开始出现变化,即
该存储位数的像素点有多少个
(需8位二进制)
- b[i]表示每段的存储位数
- l[i]表示该段中有几个像素点
- 很明显划分3段这种方案比前面划分4段的方案少了5个二进制位
最优子结构性质
- 如果l[i],b[i]不是一个最优分段,说明该段还可以进一步细分,存在其它最优的划分方法,进而可以构造出新解, 这与原假设矛盾。
递归计算最优值
练习
专家总结
- 第7个加进来,自己一段,前6个s[6]已经最优,分配好了,然后自己的存储位数,+11
- 自己和前一个一段,前5个已经最优,max{6,7存储位数},+11
- …
- 第7个加进来,那7个放在一起一段,找最大存储位数,+11
L[i]:前i个像素点最后一段包含的个数
b[i]:前i个像素点最后一段的最大存储位数
- L[7]=3,表明后3个元素1组;
- 然后看l[4]=4,表明4个元素为1组;
- 有这样的直观感受,即,把最后一个元素再分一组效果会不会更好?
- 测试的结果:分为3段后,总的存储长度为62,
- 而原2段的划分方法,总的存储长度为58;