2013年4月13日 星期六

[UVA] 172 Calculator Language

思路:
   算式中有三種token。分別為正負整數,變數 (A ~ Z) 和運算元 ( +, -, *, /, =, (, ) )。前二種哥以統括為運算子。在parse算式時,運算元放一個stack (S1),運算子放另一個stack (S2)。為了保證括號的優先性,當遇到算式結尾或是右括號時,不斷pop這S1 與 S2 直到S1空了,或是S1頂部為左括號。值得注意的是,'='會改變變數的值,所以要維持一個變數的mapping。

   題目本身不難,吃了三個wa的原因主要有二:
1. 所有變數default為0
2. 比較變數有無更動要在算式做完才比對

eg,
A = 2
B = (A = 3) - (A = 2)

ans:
A = 2
B = 1

沒有留言:

張貼留言