早教吧 育儿知识 作业答案 考试题库 百科 知识分享

VB如何实现各数字均不相同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"成立,且每个字母表示的数字均不相同。

题目详情
VB如何实现各数字均不相同
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"成立,且每个字母表示的数字均不相同。
▼优质解答
答案和解析

'想不出别的办法,只能穷举法。本已为要消耗不少时间的,还好才一秒多点,

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