找出所有可能的組合 並一個個比較
for : 10*10*10*10=10000
暴力解不會TLE
國二寫的 有些語法可能過於冗長
compareN 函數求出幾A幾B
chk 判斷是否符合任兩數必不相同
Sub main()
Open "guess.in" For Input As #1
Open "guess.out" For Output As #2
f = ""
Do
Input #1, n
If n = "***" Then f = f & " " & n: Exit Do
If n = "*" Then
f = f & " " & n
ds = 0
ReDim a(10000, 1)
Do
Line Input #1, d
If d = "**" Then Exit Do
a(ds, 0) = Left(d, 4)
a(ds, 1) = Right(d, 4)
ds = ds + 1
Loop
For i = 0 To 9
For j = 0 To 9
For k = 0 To 9
For l = 0 To 9
If chk(i, j, k, l) <> False Then
y = True
For m = 0 To ds - 1
If compareN(a(m, 0), i & j & k & l) <> a(m, 1) Then y = False: Exit For
Next
If y = True Then f = f & " " & i & j & k & l
End If
Next
Next
Next
Next
f = f & " " & "**"
End If
Loop
Print #2, Replace(Trim(f), " ", vbCrLf)
Close
End Sub
Function chk(n1, n2, n3, n4)
a = Array(n1, n2, n3, n4)
y = True
For i = 0 To 3
For j = 0 To 3
If i <> j And a(i) = a(j) Then y = False
Next
Next
chk = y
End Function
Function compareN(n1, n2)
a = 0: b = 0
For i = 1 To 4
For j = 1 To 4
If Mid(n1, i, 1) = Mid(n2, j, 1) Then
If i = j Then
a = a + 1
Else
b = b + 1
End If
Exit For
End If
Next
Next
compareN = a & "A" & b & "B"
End Function
類似題目 : 2007國中組決賽 猜數字