UVa 112 – Tree Summing

112Tree Summing  Accepted C++ 0.075 0.010 596 21 hours ago

又來一題字串處理,不過跟上一題不同的是,這題一筆測資有可能多行,所以比較麻煩。題目翻譯請點這裡

首先,很容易可以發現題目的表達式實際上就是二元樹的前序走訪,所以我們可以一邊處理輸入一邊遞迴走訪二元樹,並不用實際把樹建造出來。接下來就只是一些細節要注意,像是節點上的值有可能為負數、小心空白等等。網路上有人用到cin.peek()、cin.ignore()等函式,在這題很有用,有興趣可以去了解。

另外,有時候assert()這個函式很好用,括號裡面可以放已知或你確定的條件,當assert()裡面的條件式為false,會跳出例外並立即終止程式,在UVa上的話會顯示「執行時期錯誤」(Runtime error),而true則不會發生任何事。這樣的好處是,可以加強一道確認的機制,避免一些爛bug,而且我認為有時也能提升程式碼的可讀性唷!

繼續閱讀

UVa 1200 – A DP Problem

Problem   Verdict Lang Time Best Rank Submit Time
1200A DP Problem  Accepted C++ 0.002 0.000 7 10 mins ago

紀念一下,第一次就AC,而且排名出乎意料的前面!!!

P.S. 我沒有優化輸出入喔:)

我的作法就是統計一次項x1和零次項x0,而等號左式x1用+的、x0用-的,等號右式則相反,來模擬我們一般計算時的移項。特別要小心±x代表±1x,還有最後的答案要取floor,而我發現我的程式對於-x=x這筆測資的答案會輸出-0,不太懂為什麼,還望好心人士賜教~~

繼續閱讀