回覆列表
  • 1 # 使用者7707316745275

    正如“幾何輔助線為何這樣添”,雖有章法,但仍需自己總結探索,才能深刻理解。

    略陳固陋。(以下用簡單for迴圈闡述。)

    為何迴圈?

    可以這樣想:透過迴圈可以將某一組操作重複多次。

    何以巢狀迴圈?

    一般來說,當需要重複執行的操作受多個迴圈變數共同影響時,可能需要巢狀迴圈。

    簡單舉例:

    迴圈體部分的DoSomething函式需要由i和j兩個迴圈變數控制,且需要對(i,j)可以取值的情況逐個列舉,這時候就可以考慮巢狀迴圈了。

    (不過這樣解釋其實就跟什麼都沒說一樣……)

    至於什麼情況需要用到巢狀迴圈,事實上,不是我們拿到一道題目,然後觀察出它需要巢狀,然後因為要巢狀所以我們就想怎麼去寫這個巢狀迴圈,而是當我們思考用什麼演算法解決問題時,自然而然地會發現,一層迴圈不夠,可能需要多層迴圈。

    具體的題型套路,確實可以有,但大不必強行去記住對應的題型。況且,拿到題目時,題目往往不會“明顯暗示”你需要巢狀。不過也不要慌張,因為我們解一道演算法題,首先是思考用什麼方法破解問題。至於要不要巢狀,只是形式,一旦你方法有了,需要巢狀,只是水到渠成。

    “如何找到解決演算法題的方法?”呃……這個,就偏離目前的話題了……

    話不能說絕了。

    有的題目,它就是明顯暗示你要巢狀。

    例如:

    給定數列 ,求當 取遍 且滿足 時,表示式 的最大值。

    (就是求一個數列的一段連續子數列的項之和的最大值。)

    這再明顯不過了,i和j各一層迴圈,求和再一層迴圈,三層迴圈,搞定!

    可是,當你一下子寫出一個三重巢狀迴圈時,難道不想想有沒有可以改進最佳化的地方嗎?(畢竟這樣時間複雜度有點高啊……)

    然後你會發現,巢狀迴圈的應用,可能沒有想象中的那麼廣泛。

  • 中秋節和大豐收的關聯?
  • 車載dvd怎麼設定音效?