回 帖 发 新 帖 刷新版面

主题:求算法实现

问题如下:。
如何设计算法确定目标算式  5+3 包含在源算式 28+5-11+3中。源算式也有可能是以下形式 
    13-5-3
    17-5-6-3
    28+3+5
    11-3-5
    18-(11-3-5)

象以下的算式 虽然包含数字5和3,但没有包含目标算式 5+3
   5+11-3

再比如目标算式 5-3 ,包含在以下形式的源算式中
   26-(9-5+3)
   5+2-3
   25-3+1+5

以上3个式子,都是包含 5-3,应该怎么编程解决?(!!!如果有人解出来,我要向他拜师学算法!!)

[em1]

回复列表 (共11个回复)

11 楼

因为我只懂QB,我把QB代码发上来供参考,
而且我没做去括号处理
(以前好像有写过去括号的东西,忘了,没找着)

Function sub53(a$, b$)
d = 0
For i = 1 To Len(a$)
    c$ = Mid$(a$, i, 1)
    If (c$ >= "0" And c$ <= "9") Then
       d = 1
    ElseIf d = 1 Then
       d = 2
    End If
    If d = 2 Then
       x = Val(Mid$(a$, 1, i - 1))
       y = Val(Mid$(a$, i))
       Exit For
    End If
Next

z = Sgn(x) * Sgn(y)

Dim ar(100) As Integer

j = 0
d = 0
e = 1
b$ = b$ + " "
For i = 1 To Len(b$)
    c$ = Mid$(b$, i, 1)
    If (c$ >= "0" And c$ <= "9") Then
       d = 1
    ElseIf d = 1 Then
       d = 0
       j = j + 1
       ar(j) = Val(Mid$(b$, e, i - e))
       e = i
    End If
Next

For i = 1 To j
    If Abs(ar(i)) = Abs(x) Then
       For k = 1 To j
           If Abs(ar(k)) = Abs(y) Then
              If z = Sgn(ar(i)) * Sgn(ar(k)) Then
                 sub53 = -1
                 print "YES"
                 Exit Function
              End If
           End If
       Next
    End If
Next
End Function

我来回复

您尚未登录,请登录后再回复。点此登录或注册