求助:一组数字加减运算得到指定数
excel吧
全部回复
仅看楼主
level 1
爱在重庆 楼主
比如一组可重复使用160 240 480 800 1280 1600 3680的数字 通过加减运算得到一个我想要的固定数840?怎么设置公式或者规划求解 感谢!
2021年07月01日 10点07分 1
level 10
我的只能想到7次For循环,强行算出所有结果,看是否有等于的
2021年07月02日 07点07分 2
远远不够
2021年07月02日 07点07分
level 5
不知数学模型是怎样算的。
2021年07月02日 07点07分 3
level 5
2021年07月02日 07点07分 4
level 5
https://blog.csdn.net/john548/article/details/52217143
如果你觉得这个很需要,就慢慢研究吧、[哈哈]
2021年07月02日 07点07分 5
level 11
'数据全部使用,840无解改成880有解
'如果组合个数不限可以先调佣一个全组合函数组合一下,会有2^cnt-1组的,然后再用二进制取2态进行计算
Option Explicit
Const RESULT = 880
Sub 加减凑数()
 Dim i, j, a, n, p, sum, s
 a = Array(160, 240, 480, 800, 1280, 1600, 3680)
 ReDim t(UBound(a)) As Long
 For i = 0 To 2 ^ (UBound(a) + 1) - 1
  sum = 0: n = i: p = UBound(t)
  Do While n > 0
   t(p) = n Mod 2: n = n \ 2: p = p - 1
  Loop
  For j = 0 To UBound(a)
   sum = sum + (-1) ^ (t(j) + 1) * a(j)
  Next
  If sum = RESULT Then
   For j = 0 To UBound(t)
    s = s & IIf(t(j) = 0, "-", "+") & a(j)
   Next
   Debug.Print s & "=" & sum
   s = vbNullString
  End If
 Next
End Sub
2021年07月04日 11点07分 6
1