作者kain1230 (简单至上)
看板Visual_Basic
标题[VBA ] 想请教关於Excel的问题
时间Mon Jan 28 20:17:11 2013
不好意思,最近和学生在讨论一个填数问题,目前遇到组合大过庞大,
因此人工计算过於繁复,想藉助Excel来解决,
我们有16个变量 a,b,c,...,p
每个变量都是1到16的正整数,且各自彼此都不同,
我们处理得到的方程有以下几个
a+b+c+d+e+f+g=49
2*b+c+2*d+e+2*f+g=87
h+i+j=d+e+f
k+l+m=b+g+f
n+o+p=b+c+d
我们依据网路一些资料先处理的a,b,c,...,g的7个变量,
但是加入9个变量(h到p)後及条件後,Excel却一直当掉无法处理,
不知道是否有大大能够协助。万分感谢!处理前7个变数的语法如下:
Function Unequal(ParamArray Nums() As Variant) As Integer
Dim intI1 As Integer, intI2 As Integer, l As Integer, u As Integer
l = LBound(Nums())
u = UBound(Nums())
If u - l < 1 Then
Unequal = 3
Exit Function
End If
For intI1 = l To u - 1
For intI2 = intI1 + 1 To u
If Nums(intI1) = Nums(intI2) Then
Unequal = 0
Exit Function
End If
Next
Next
Unequal = 1
End Function
Sub hexagonhive ()
For a = 1 To 16
For b = 1 To 16
For c = 1 To 16
For d = 1 To 16
For e = 1 To 16
For f = 1 To 16
g = 49 - a - b - c - d - e – f
Dim ue As Integer, str As String
ue = Unequal(a, b, c, d, e, f, g)
If ue = 1 And g > 0 And g < 17 And 2 * b + c + 2 * d + e + 2 * f + g = 87 Then
t = t + 1
Cells(t, 1) = a: Cells(t, 2) = b: Cells(t, 3) = c: Cells(t, 4) = d: Cells(t,
5) = e: Cells(t, 6) = f: Cells(t, 7) = g:
End If
Next
Next
Next
Next
Next
Next
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.161.30.28
※ 编辑: kain1230 来自: 118.161.30.28 (01/28 20:18)
1F:推 lion21:你的问题出在演算法.16个数字应该用排列组合来做 01/28 20:36
2F:推 yauhh:16! = 2092278988800, 7! = 5040, 是因为海量让你以为当掉? 01/29 01:20
3F:→ yauhh:16^15=1152921504606846976, 7^6=117649, 这是你的程式 01/29 01:22
4F:推 EdisonX:怎麽我想到数字谜问题 @@ 另外可以的话,用 lingo. 01/30 01:20