做法類似搵 maximum common substring
首先map哂佢d variable名做數字
之後fix其中一條sequence, 窮舉第2條sequence係佢上面的位置 (或者調轉)
不同於搵common substring, 判斷valid唔valid要睇埋之前的
方法就係用2支pointer做掃描線!
valid 就 tail++
invalid 就 head++
判斷valid的方法
一開始諗住2個sequence, 把variable一個對返對應的variable
不過唔work
例如
Seq 1:
A = B + C
A = B + B
Seq 2:
X = W + Y
X = Y + Y
compare 第一句 statement 時, 對 X->A 無問題
但係 "W->B, Y->C" 和 "W->C, Y->B" 是有分別的, 而且要在之後先睇得出來
之後就想到了"記上一次出現的位置"的方法
位置指的是 第?句statement的左邉/右邊
即不再記 X->A, 而是記 "X對上一次出現是在第一句statement的左邊"
每次checking就係睇下這些 "位置" 是否吻合
就解決了問題
No comments:
Post a Comment