'一维:数字或运算符
'二维:方法(0-增加、1-减少、2-移动)
'三维:每种方法的产生的结果(最多三种,空结束)
'字典:数字或运算符镜像一维维标号
Option Explicit
Sub test()
Dim dic, i, arr
Set dic = CreateObject("scripting.dictionary")
arr = Split("0 1 2 3 4 5 6 7 8 9 + -")
For i = 0 To UBound(arr): dic(arr(i)) = i: Next
ReDim arr(11, 2, 2) As String
Call init(arr)
Debug.Print try(arr, dic("+"), 1) '"+" 减少1根
Debug.Print try(arr, dic("0"), 2) '"0" 移动1根
Debug.Print try(arr, dic("1"), 0) '"1" 增加1根
Debug.Print try(arr, dic("8"), 1) '"8" 减少1根
End Sub
Function try(arr, m, n) As String
Dim brr(), cnt, i
For i = 0 To 2
If Len(arr(m, n, i)) = 0 Then Exit For
cnt = cnt + 1: ReDim Preserve brr(i)
brr(i) = arr(m, n, i)
Next
If i > 0 Then try = Join(brr, ",")
End Function
Function init(arr) '按这方法自己添加其它数据
arr(0, 0, 0) = 8: arr(0, 2, 0) = 6: arr(0, 2, 1) = 9
arr(1, 0, 0) = 7
arr(2, 2, 0) = 3
''''
arr(8, 1, 0) = 9: arr(8, 1, 1) = 6: arr(8, 1, 2) = 0
''''
arr(10, 1, 0) = 1: arr(10, 1, 1) = "-"
End Function |