大家只需给一个思路就行了啦 不能太模糊了啦,在清楚点
从0到9的数字组成一道一位数加两位数加三位数得四位数的算式不得重复数字
分析:由数学知识不难分析出,要使等式成立,def应代表尽可能大的三位数,ghij应代表尽可能小的四位数,因此必有d=9,g=1,h=0。a,b,c,e,f,i,j的值只能在2~8这7个数字中选取.我们可以用多重循环来列举出它们各种不同的取值情况,逐一地判断它们是否满足上述等式。 为了避免同一数字被重复使用,可设立逻辑数组x,x[i]值为True时表示数i没有被使用。
Private Sub cmdShow_Click()
Dim a, b, c, d, e, f, g, i, j, h, u, v, n As Integer
Dim str1 As String
Dim x(1 To...全部
分析:由数学知识不难分析出,要使等式成立,def应代表尽可能大的三位数,ghij应代表尽可能小的四位数,因此必有d=9,g=1,h=0。a,b,c,e,f,i,j的值只能在2~8这7个数字中选取.我们可以用多重循环来列举出它们各种不同的取值情况,逐一地判断它们是否满足上述等式。
为了避免同一数字被重复使用,可设立逻辑数组x,x[i]值为True时表示数i没有被使用。
Private Sub cmdShow_Click()
Dim a, b, c, d, e, f, g, i, j, h, u, v, n As Integer
Dim str1 As String
Dim x(1 To 9) As Boolean
n = 0
For i = 1 To 9
x(i) = True
Next
Text1。
Text = ""
g = 1: h = 0: d = 9
For a = 2 To 8
x(a) = False
For b = 2 To 8
If x(b) Then
x(b) = False
For c = 2 To 8
If x(c) Then
x(c) = False
For e = 2 To 8
If x(e) Then
x(e) = False
For f = 2 To 8
If x(f) Then
x(f) = False
For i = 2 To 8
If x(i) Then
x(i) = False
For j = 2 To 8
If x(j) Then
u = a + c + f + (b + e) * 10 + 900
v = 1000 + i * 10 + j
If u = v Then
str1 = Trim(Str(a)) + "+" + Trim(Str(b)) + _
Trim(Str(c)) + "+" + Trim(Str(d)) + Trim(Str(e)) + _
Trim(Str(f)) + "=" + Trim(Str(g)) + _
Trim(Str(h)) + Trim(Str(i)) + Trim(Str(j))
If n = 0 Then
Text1。
Text = str1
ElseIf n Mod 3 = 0 Then
Text1。
Text = Text1。Text + Chr(13) + Chr(10) + str1
Else
Text1。
Text = Text1。Text + Chr(13) + " " + str1
End If
n = n + 1
End If
End If
Next
x(i) = True
End If
Next
x(f) = True
End If
Next
x(e) = True
End If
Next
x(c) = True
End If
Next
x(b) = True
End If
Next
x(a) = True
Next
Label1。
Caption = "解的个数:" + Trim(Str(n))
End Sub
。收起