正如“幾何輔助線為何這樣添”,雖有章法,但仍需自己總結探索,才能深刻理解。
略陳固陋。(以下用簡單for迴圈闡述。)
為何迴圈?
可以這樣想:透過迴圈可以將某一組操作重複多次。
何以巢狀迴圈?
一般來說,當需要重複執行的操作受多個迴圈變數共同影響時,可能需要巢狀迴圈。
簡單舉例:
迴圈體部分的DoSomething函式需要由i和j兩個迴圈變數控制,且需要對(i,j)可以取值的情況逐個列舉,這時候就可以考慮巢狀迴圈了。
(不過這樣解釋其實就跟什麼都沒說一樣……)
至於什麼情況需要用到巢狀迴圈,事實上,不是我們拿到一道題目,然後觀察出它需要巢狀,然後因為要巢狀所以我們就想怎麼去寫這個巢狀迴圈,而是當我們思考用什麼演算法解決問題時,自然而然地會發現,一層迴圈不夠,可能需要多層迴圈。
具體的題型套路,確實可以有,但大不必強行去記住對應的題型。況且,拿到題目時,題目往往不會“明顯暗示”你需要巢狀。不過也不要慌張,因為我們解一道演算法題,首先是思考用什麼方法破解問題。至於要不要巢狀,只是形式,一旦你方法有了,需要巢狀,只是水到渠成。
“如何找到解決演算法題的方法?”呃……這個,就偏離目前的話題了……
話不能說絕了。
有的題目,它就是明顯暗示你要巢狀。
例如:
(就是求一個數列的一段連續子數列的項之和的最大值。)
這再明顯不過了,i和j各一層迴圈,求和再一層迴圈,三層迴圈,搞定!
可是,當你一下子寫出一個三重巢狀迴圈時,難道不想想有沒有可以改進最佳化的地方嗎?(畢竟這樣時間複雜度有點高啊……)
然後你會發現,巢狀迴圈的應用,可能沒有想象中的那麼廣泛。
正如“幾何輔助線為何這樣添”,雖有章法,但仍需自己總結探索,才能深刻理解。
略陳固陋。(以下用簡單for迴圈闡述。)
為何迴圈?
可以這樣想:透過迴圈可以將某一組操作重複多次。
何以巢狀迴圈?
一般來說,當需要重複執行的操作受多個迴圈變數共同影響時,可能需要巢狀迴圈。
簡單舉例:
迴圈體部分的DoSomething函式需要由i和j兩個迴圈變數控制,且需要對(i,j)可以取值的情況逐個列舉,這時候就可以考慮巢狀迴圈了。
(不過這樣解釋其實就跟什麼都沒說一樣……)
至於什麼情況需要用到巢狀迴圈,事實上,不是我們拿到一道題目,然後觀察出它需要巢狀,然後因為要巢狀所以我們就想怎麼去寫這個巢狀迴圈,而是當我們思考用什麼演算法解決問題時,自然而然地會發現,一層迴圈不夠,可能需要多層迴圈。
具體的題型套路,確實可以有,但大不必強行去記住對應的題型。況且,拿到題目時,題目往往不會“明顯暗示”你需要巢狀。不過也不要慌張,因為我們解一道演算法題,首先是思考用什麼方法破解問題。至於要不要巢狀,只是形式,一旦你方法有了,需要巢狀,只是水到渠成。
“如何找到解決演算法題的方法?”呃……這個,就偏離目前的話題了……
話不能說絕了。
有的題目,它就是明顯暗示你要巢狀。
例如:
給定數列 ,求當 取遍 且滿足 時,表示式 的最大值。(就是求一個數列的一段連續子數列的項之和的最大值。)
這再明顯不過了,i和j各一層迴圈,求和再一層迴圈,三層迴圈,搞定!
可是,當你一下子寫出一個三重巢狀迴圈時,難道不想想有沒有可以改進最佳化的地方嗎?(畢竟這樣時間複雜度有點高啊……)
然後你會發現,巢狀迴圈的應用,可能沒有想象中的那麼廣泛。