主题:求算法实现
bclover
[专家分:0] 发布于 2007-02-01 22:39:00
问题如下:。
如何设计算法确定目标算式 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]
最后更新于:2007-02-05 20:31:00
回复列表 (共11个回复)
11 楼
moz [专家分:37620] 发布于 2007-02-14 03:00:00
因为我只懂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
我来回复