[VBA ] 想請教關於Excel的問題

看板Visual_Basic作者 (簡單至上)時間11年前 (2013/01/28 20:17), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串1/3 (看更多)
不好意思,最近和學生在討論一個填數問題,目前遇到組合大過龐大, 因此人工計算過於繁複,想藉助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)

01/28 20:36, , 1F
你的問題出在演算法.16個數字應該用排列組合來做
01/28 20:36, 1F

01/29 01:20, , 2F
16! = 2092278988800, 7! = 5040, 是因為海量讓你以為當掉?
01/29 01:20, 2F

01/29 01:22, , 3F
16^15=1152921504606846976, 7^6=117649, 這是你的程式
01/29 01:22, 3F

01/30 01:20, , 4F
怎麼我想到數字謎問題 @@ 另外可以的話,用 lingo.
01/30 01:20, 4F
文章代碼(AID): #1H1cn92p (Visual_Basic)
文章代碼(AID): #1H1cn92p (Visual_Basic)