Arrays 如何找到一组三个或三个以上的数字?
你能帮我在一个给定的列表中找到一组三个以上的数字,总和为X吗 Fx列表1,2,3,4,5,6,7,8,9中总和为6的一组树数将为1+2+3 我可以用下面的两个数字se VBA代码来实现这一点Arrays 如何找到一组三个或三个以上的数字?,arrays,vba,algorithm,integer,Arrays,Vba,Algorithm,Integer,你能帮我在一个给定的列表中找到一组三个以上的数字,总和为X吗 Fx列表1,2,3,4,5,6,7,8,9中总和为6的一组树数将为1+2+3 我可以用下面的两个数字se VBA代码来实现这一点 Function Set(list As Range, x As Integer) k = 0 j = 0 For Each i In list If x = list(1 + k) + list(list.Rows.Count - j) Then Set = k &
Function Set(list As Range, x As Integer)
k = 0
j = 0
For Each i In list
If x = list(1 + k) + list(list.Rows.Count - j) Then
Set = k & ", " & j
ElseIf list(1 + k) + list(list.Rows.Count - j) > x Then
j = j + 1
ElseIf list(1 + k) + list(list.Rows.Count - j) < x Then
k = k + 1
End If
Next i
End Function
函数集(列表为范围,x为整数)
k=0
j=0
对于列表中的每个i
如果x=list(1+k)+list(list.Rows.Count-j),则
Set=k&“,”&j
ElseIf list(1+k)+list(list.Rows.Count-j)>x然后
j=j+1
ElseIf list(1+k)+list(list.Rows.Count-j)
致意
克雷斯滕也许
Function myPair(list As Range, x As Integer)
Dim vDB, vR(1 To 3)
Dim i As Long, n As Long, k As Long
vDB = list
n = UBound(vDB, 1)
For i = 1 To n
For j = i + 1 To n
For k = j + 1 To n
If vDB(i, 1) + vDB(j, 1) + vDB(k, 1) = x Then
vR(1) = vDB(i, 1): vR(2) = vDB(j, 1): vR(3) = vDB(k, 1)
myPair = Join(vR, ",")
End If
Next k
Next j
Next i
End Function
一对三个数字
这是什么?[9,12200]是一对三个数字numbers@Kresten在英语中,“pair”总是精确地描述两个项目。一个更通用的术语是tuple,或者set(如果顺序不重要的话,如您的示例中所示)。谢谢。我没有意识到,太棒了!谢谢。这当然在O(n^3)
时间内有效,但你可以做得更好:使用表格查找查看如果vDB(i,1)+vDB(j,1)
匹配某个整数k
的x-vDB(k,1)
。这需要在开始循环之前,将k=1
到n
的x-vDB(k,1)
预处理到表中。