ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

¦p¦ó±q¤@°ï¼Æ¦r§ä¥X¥[Á`²Å¦X¯S©w­È

¦p¦ó±q¤@°ï¼Æ¦r§ä¥X¥[Á`²Å¦X¯S©w­È

½Ð°Ý¦p¦ó±q¤U¦C31­Ó¼Æ¦r,§ä¥X¥[Á`µ¥©ó 49177 ?

39824 39615 24616 13572 12760 10530 9963 8090 7290 7240 6300 5940 5822 5814
4536 4342 4114 3816 3150 3078 2520 1944 1881 1560 1232 1170 1062 972 816 729 63318

¼M¼Æ­È¤¸¯À¦³31­Ó, ³Ì¤j¥i¯à²Õ¦X¦¸¼Æ= 2^31, °N¯à¸Õ¸Õ:
  1. Option Explicit
  2. Dim b(), c(1), m&, k&, f$, t(1), dgt As Boolean
  3. Sub zz()
  4.     Dim a, i&
  5.     Range("d2:d" & Rows.Count).ClearContents
  6.     dgt = False
  7.     f = "+"
  8.     a = Split("39824 39615 24616 13572 12760 10530 9963 8090 7290 7240 6300 5940 5822 5814 4536 4342 4114 3816 3150 3078 2520 1944 1881 1560 1232 1170 1062 972 816 729 63318", " ")
  9.     m = UBound(a) + 1
  10.     c(1) = 49177
  11.     ReDim b(1 To m)
  12.     For i = 1 To m
  13.         b(i) = a(i - 1) ', 1)
  14.     Next i
  15.     k = 0: Call dg("", m)
  16.     MsgBox c(1) & "=" & Left(c(0), Len(c(0)) - 1)
  17. End Sub
  18. Sub dg(s$, mi&)
  19.     Dim j&, jj&, ss$, a, bb()
  20.     For j = 0 To 1
  21.         If dgt Then Exit Sub
  22.         If j Then ss = b(mi) Else ss = ""
  23.         If mi > 1 Then Call dg(IIf(ss = "", s, ss & f & s), mi - 1) Else k = k + 1: a = IIf(ss = "", s, ss & f & s)
  24.         If Len(a) Then
  25.             c(0) = a
  26.             a = Split(a, "+")
  27.             ReDim bb(UBound(a))
  28.             For jj = 0 To UBound(a)
  29.                 bb(jj) = Val(a(jj))
  30.             Next
  31.             If Application.Sum(bb) = c(1) Then dgt = True
  32.         End If
  33.     Next j
  34. End Sub
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : ¤@­Ó¤Hªº§Ö¼Ö¡D¤£¬O¦]¬°¥L¾Ö¦³±o¦h¡A¦Ó¬O¦]¬°¥L­p¸û±o¤Ö¡C
ªð¦^¦Cªí ¤W¤@¥DÃD