'想不出别的办法,只能穷举法。本已为要消耗不少时间的,还好才一秒多点,
Private Sub Command1_Click()
'a,b,c,d,e,f,g,h,i 这9个字母分别表示1、2、3、4、5、6、7、8、9中的某个数字,如何用VB编程实现
'“a+13b/c+d+12e-f+gh/i=87"成立,且每个字母表示的数字均不相同。
Dim ara() As Integer
ReDim ara(8)
Dim i As Integer
For i = 0 To 8
ara(i) = i + 1
Next
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer, g As Integer, h As Integer
Dim arb() As Integer, arc() As Integer, ard() As Integer, are() As Integer, arf() As Integer, arg() As Integer, arh() As Integer, ari() As Integer
Dim dt
dt = Timer
Dim Count As Integer
For a = 0 To 8
arb = ara
arb(a) = arb(8)
'ReDim Preserve arb(7)
For b = 0 To 7
arc = arb
arc(b) = arc(7)
'ReDim Preserve arc(6)
For c = 0 To 6
ard = arc
ard(c) = ard(6)
'ReDim Preserve ard(5)
For d = 0 To 5
are = ard
are(d) = are(5)
'ReDim Preserve are(4)
For e = 0 To 4
arf = are
arf(e) = arf(4)
'ReDim Preserve arf(3)
For f = 0 To 3
arg = arf
arg(f) = arg(3)
'ReDim Preserve arg(2)
For g = 0 To 2
arh = arg
arh(g) = arh(2)
'ReDim Preserve arh(1)
For h = 0 To 1
ari = arh
ari(h) = ari(1)
'ReDim Preserve ari(0)
i = 0
If ara(a) + 13 * arb(b) / arc(c) + ard(d) + 12 * are(e) - arf(f) + arg(g) * arh(h) / ari(i) = 87 Then
Debug.Print ara(a); " + 13 * "; arb(b); " / "; arc(c); " + "; ard(d); " + 12 * "; are(e); " -"; arf(f); " + "; arg(g); " * "; arh(h); " / "; ari(i)
Count = Count + 1
End If
Next
Next
Next
Next
Next
Next
Next
Next
Debug.Print Int((Timer - dt) * 1000); "毫秒", Count; "条"
End Sub