趙靖 5:47:53 AM
這題用逆波蘭(后綴)式再枚舉即可,然后轉化為帶括號的中綴式
趙靖 5:48:17 AM
就可以繞過括號,這樣就變成一道體力活了
蕎葉 5:52:07 AM
哈哈。
蕎葉 5:52:49 AM
那晚,我寫了三個小時。
趙靖 5:53:27 AM
完全做出來三個小時不算多,但是有正確的方向要堅定的多
趙靖 5:54:51 AM
數字是排定的,符號插入其中,再構造圖求路徑的話就更清晰了
蕎葉 5:55:04 AM
http://www.tkk7.com/wangflood/articles/Demo.html 蕎葉 5:55:06 AM
呵呵。
趙靖 5:56:39 AM
這樣做法可能是錯誤的,設想如果(5+6)*(7+8)+9+10這個順序是shuffle不出來的
趙靖 5:57:21 AM
后綴應為56+78+*9+10+
趙靖 5:57:46 AM
要去掉括號,后綴是一個絕佳的選擇
蕎葉 5:58:01 AM
不允許56這樣的組合。
趙靖 5:58:13 AM
我寫的是后綴式
蕎葉 5:58:18 AM
shuffle是把[5,6,7,8,9,10]的前后順序弄亂。
蕎葉 5:58:27 AM
發來看看啊。
蕎葉 5:58:35 AM
不懂后綴式是什么意思。、
趙靖 5:58:52 AM
逆波蘭式呀
趙靖 5:59:08 AM
就是后根遍歷表達式
趙靖 6:01:35 AM
看看你的程序能不能找到184
蕎葉 6:02:03 AM
為什么要找到184
趙靖 6:02:20 AM
這個說明你shuffle是不能表達括號的優先級的
蕎葉 6:03:48 AM
shuffle,比括號得到了更多的結果。
蕎葉 6:03:59 AM
但括號可以做到的,shuffle都給辦到。
趙靖 6:04:31 AM
你怎么表達這種括號呢(5+6)*(7+8)
趙靖 6:04:52 AM
shuffle 去掉括號看看
蕎葉 6:05:22 AM
對噢。
蕎葉 6:06:35 AM
可以這樣,5+6)*(7+8)
算出5+6后,就是[11,7,8,9,10]再次shuffle
趙靖 6:06:51 AM
那算法也太猥瑣了些
蕎葉 6:06:56 AM
哈哈。就期望能算出第二個結果來。
蕎葉 6:06:59 AM
我也這么覺得啊。
趙靖 6:09:47 AM
這個式子的通用格式是
5678910
abcdef
然后吧abcde查到合適的位置去,其中至少f是最后面的
如56+67+*8+9+10+就表達了(5+6)*(7+8)+9+10
趙靖 6:10:19 AM
后綴計算是最快的,僅僅需要一個棧