看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《calqlus (東方一隻鹿)》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) : 遇到的問題: (題意請描述清楚) : 題目有些英文看不懂 : 所以先直接原題目po網址 : http://0rz.tw/b0zBf : 大概了解 : 會出現的運算符號有 四則運算和 表示負號的- 以及括號() 取餘數% : 看到這題目的印象 : 就是用C++的operator : 不過很快就發現 那些符號是要強制輸入的-.- : 於是想到第二個 用堆疊 : 不過問題就在這了吧 : 是要怎麼樣把 像一次輸入的 789-(400+300) 好好的拆開 : 也許要先宣告字串先放再拆 : 不過我會用到strpbrk()那個函式...最近老是用它也蠻煩的 : 所以想問 : 有沒有更快 或 比較不用用到奇怪的函式的方法 : 感謝 提供一個想法,有錯請指正 用遞洄方式建一個類似下面的樹 分割順序是將四則運算的規則反過來, '-'是減號還是負號就自己在多加點判斷 EX:(A+B)*C+D                  (A+B)*C+D                  / ∣ \               (A+B)*C  + D / ∣ \ (A+B) * C   / ∣ \           ( A+B ) /∣\ A + B 建完之後再從葉節點把值計算完後傳回上層 (這裡就知道為何分割順序與四則運算的規則相反) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.87.131
LPH66:這其實就是個簡單的 recursive descendant parser 啊 XD 10/09 20:58
yauhh:不需要樹狀分割.這裡要用到分割只是要把二個以上的數字視為 10/09 21:57
yauhh:同一個數,只要按()+-*/任意順序分割再整理到陣列中即可. 10/09 21:59
yauhh:不過,遞迴處理是一定要的. 10/09 21:59
樹只是一種方便說明的概念 實做方式隨人 ※ 編輯: tabinoyume 來自: 122.123.84.161 (10/09 22:06)
yauhh:嗯,沒錯,不管任何順序分割,都是樹. 10/09 23:12