1-9九个数字不重复组成一个三位数加法算式,求出所有组合

 问题描述:
将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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值