问题描述:
将1-9的9个数字不重复的填入[ ][ ][ ] + [ ][ ][ ] = [ ][ ][ ],使得等式成立
如 173 + 286 = 459 且 将 286 + 173 = 459 视为同一种,问满足这样条件的情况有几种
VBA代码如下:
Sub FindThreeNumbers()
Dim nums(1 To 10000, 1 To 3)
nums(1, 1) = "第一个数"
nums(1, 2) = "第二个数"
nums(1, 3) = "第三个数"
'123456789
Dim N1 As Integer
Dim N2 As Integer
Dim N3 As Integer
Dim x As Integer
Dim isAdd As Boolean
x = 2
For i = 1 To 9
For j = 1 To 9
For k = 1 To 9
If i <> j And i <> k And j <> k Then
N1 = i * 100 + j * 10 + k
'Debug.Print "N1" & N1
For a = 1 To 9
For B = 1 To 9
For C = 1 To 9
If a <> i And a <> j And a <> k And B <> j And B <> i And B <> k And C <> j And C <> i And C <> k And a <> B And a <> C And B <> C Then
N2 = a * 100 + B * 10 + C
' Debug.Print "N2"; N2
For m = 1 To 9
For n = 1 To 9
For t = 1 To 9
If m <> i And m <> j And m <> k And m <> a And m <> B And m <> C And n <> i And n <> j And n <> k And n <> a And n <> B And n <> C And t <> i And t <> j And t <> k And t <> a And t <> B And t <> C And m <> n And m <> t And n <> t Then
N3 = m * 100 + n * 10 + t
' Debug.Print "N3"; N3
If N1 + N2 = N3 Or N1 + N3 = N2 Or N2 + N3 = N1 Then
isAdd = True
If x = 2 Then
nums(x, 1) = N1
nums(x, 2) = N2
nums(x, 3) = N3
x = x + 1
Else
For y = 2 To x - 1
If nums(y, 1) = N1 Then
If nums(y, 2) = N3 Or nums(y, 2) = N2 Then
isAdd = False
End If
ElseIf nums(y, 2) = N1 Then
If nums(y, 1) = N3 Or nums(y, 1) = N2 Then
isAdd = False
End If
ElseIf nums(y, 3) = N1 Then
If nums(y, 1) = N2 Or nums(y, 1) = N3 Then
isAdd = False
End If
End If
Next y
If isAdd Then
nums(x, 1) = N1
nums(x, 2) = N2
nums(x, 3) = N3
x = x + 1
End If
End If
End If
End If
Next t
Next n
Next m
End If
Next C
Next B
Next a
End If
Next k
Next j
Next i
With ThisWorkbook
.Sheets("sheet1").[A1].Resize(x, 3) = nums
End With
MsgBox "总共有" & x - 2 & "种组合"
End Sub