如何將9分解成8+1,將7分解成1+2+4,
意思是這樣的:1,2,4,8,16,32,64,128,是常量,現在將0~255範圍之内的任何一個數字,分解成這些常量之和.謝謝

解决方案 »

  1.   

    假设给定的数是n,先找出1,2,4,8,16,32,64,128中不比n大的数中的最大值m,将m保存到存放结果的数组A中,用n-m的值更新n的值。如果n=0,退出,输出A中的值,否则继续执行前面的操作。
      

  2.   

    假设给定的数是num1,先找出数组1,2,4,8,16,32,64,128...中不比num1大的数中的最大值maxNum,将maxNum保存到存放结果的数组A中,用num1-maxNum的值更新num1的值。
    如果n=0,退出,输出A中的值,否则继续执行前面的操作。
      

  3.   

    Private Sub GetValue(inValue As Integer)
    Dim tmp1, tmp2 As Integer
      
      tmp1 = 1
      Do While inValue >= tmp1
         tmp2 = tmp1 * 2
         If inValue < tmp2 Then
            List1.AddItem tmp1
            inValue = inValue - tmp1
            tmp1 = 1
            tmp2 = 1
         Else
            tmp1 = tmp2
         End If
      LoopEnd Sub