集合的二进制拆分和压缩

123 阅读1分钟

数字用集合表示 (10)

子集求和或者积分表示数字

{1,1,1,1,1,1,1,1,1,1} 10 = ∑

{1,2,4,3} 10 = ∑

表示集合中的所有元素 (多个拆分后的数串(等分串、二进制串)组合为多个数)

等分拆分

    /*
     *  选用数字一次或不用,可以加法组成小于等于10正整数
     *  10 = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
     *  9  = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
     *  8  = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 
     *  7  = 1 + 1 + 1 + 1 + 1 + 1 + 1 
     *  6  = 1 + 1 + 1 + 1 + 1 + 1 
     *  5  = 1 + 1 + 1 + 1 + 1 
     *  4  = 1 + 1 + 1 + 1 
     *  3  = 1 + 1 + 1 
     *  2  = 1 + 1 
     *  1  = 1
     */

二进制拆分

    /*
     *  选用数字一次或不用,可以加法组成小于等于10正整数
     *  10 = 1 + 2 + 4 + 3
     *  9  = 2 + 4 + 3
     *  8  = 1 + 4 + 3
     *  7  = 1 + 2 + 4
     *  6  = 2 + 4
     *  5  = 1 + 4
     *  4  = 4
     *  3  = 1 + 2
     *  2  = 2
     *  1  = 1
     */

表示集合中的有效元素 集合-->二进制数 (一个二进制串标识一个集合)

集合二进制压缩(重点是,指数位置上的次数标识清楚集合中的元素)

{0,1,3} 20 + 21 + 23 --> 1011(二进制) -->11(十进制)