given a string that contains only digits0-9
and a target value, return all possibilities to addbinaryoperators (not unary)+
,-
, or*
between the digits so they evaluate to the target value.
examples:
"123", 6 -> ["1+2+3", "1*2*3"]這道題目主要就是問給定一串數,在數字中間插入操作符構成表示式,計算表示式,使得結果等於target。"232", 8 -> ["2*3+2", "2+3*2"]
"105", 5 -> ["1*0+5","10-5"]
"00", 0 -> ["0+0", "0-0", "0*0"]
"3456237490", 9191 ->
因為要輸出所有可能的情況,所以優先想到的就是用深度優先搜尋。問題在於如何將問題拆分成多次搜尋。加減法很好處理,每當我們截出一段數字時,將之前計算的結果加上或者減去這個數,就可以將剩餘的數字字串和新的計算結果代入下一次搜尋中了,直到我們的計算結果和目標一樣,就完成了一次搜尋。而對於*並且之前為+或-,需要恢復上一次+或-的計算值,先計算當前的*,然後再執行之前運算的逆運算。這樣下來我們計算得到的時間複雜度是o(n^2),這相比leetcode裡面的其他大神用的演算法最快可達到o(n)來說,就顯得很慢了,但是大神用的演算法實在是看不懂,應該是用了加入了一些分治的思想。我們還是用簡單易懂的dfs來實現吧。
第四周作業
第四周實驗作業 1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 1.1求自然對數e的近似值 include using namespace std int main cout 1.2求圓周率 的近似值 include using name...
第四周作業
實驗作業1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 2.程式設計求 百錢百雞 問題。雞翁一值錢五,雞母 一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?3.程式設計輸入乙個整數,計算它是幾位數字,分別輸出每一位數字,並輸...
第四周作業
實驗作業1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 2.程式設計求 百錢百雞 問題。雞翁一值錢五,雞母 一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?3.程式設計輸入乙個整數,計算它是幾位數字,分別輸出每一位數字,並輸...