DSA homework 5 演習課
https://reurl.cc/y4yz2
目錄
- Top down VS Bottom up
- 解決一個 DP 問題
Top down VS Bottom up
以計算組合數 為例:
名詞定義
- 狀態:以 兩個數字表示
- 轉移:狀態和狀態之間的關係
- DP 複雜度:
Bottom up
- 多以迴圈實作
- 由較小的子問題算出較大的子問題
- 特性:程式碼簡潔、比較不直觀
Bottom up - code
Top down
- 以遞迴計算子問題的答案
- 由較大的子問題遞迴算出較小的子問題
- 記憶化搜索:每個子問題只計算一次
- 特性:接近思考方式、實作直觀
Top down - code
記憶化搜索 or not
解決一個 DP 問題
- 找有同樣結構的子問題
- 訂定狀態 & 狀態轉移
- 計算複雜度
- AC?
找有同樣結構的子問題
- 一個 的方格紙可做的操作:
- 變成比較小張的方格紙片,發現方格紙片:
訂定狀態 & 狀態轉移
- 目前子問題: 一張方格紙片的答案 (方法數)
- 目前的狀態:
- 目的:表達方格紙片的資訊
- :在原先方格紙上的 行
- :在原先方格紙上的 列
- 整張紙就是
- 這樣可以轉移了嗎
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
紙片 ->
不能合併答案,A、B兩張紙片可能會產生交互影響
增加會撕掉幾個步驟,紙片總共撕 K 次
增加狀態的維度:
從
變
紙片 ->
可以轉移
紙片 ->
則選擇第 行撕下去後,剩下的的 次會有
種撕的方法
總結
執行 次的方法
執行 次的方法
總結
Final Ans:
注意事項 ?
- 遞迴要到甚麼時候停下來
- 已經不能撕了
- 讓數值保持在
複雜度分析
- 統一以 表示:
- 狀態複雜度:
- 轉移複雜度:枚舉
- 整體複雜度: