1. 單調遞增最長子序列問題分析
1.1 根據最優子結構性質,列出遞迴方程式
定義乙個陣列dp,初始化為1,表明最小單調遞增最長子串行為1。
遞迴,如果後面的數字比前面的大dp就加1,且dp是取前面最大的
遞迴表示式為dp[i] = max(dp[j] + 1, dp[i])
1.2 給出填表法中表的維度、填表範圍和填表順序
表的維度為一維
填表的範圍為[0,n]
填表順序為自左向右
1.3 分析該演算法的時間和空間複雜度
演算法的時間複雜度:o(n^2),
演算法的空間複雜度:o(n),
2. 你對動態規劃演算法的理解
動態規劃演算法與分治法類似,其基本思想是將待求解問題分解成若干子問題,先求解子問題,再結合這些子問題的解得到原問題的解。與分治法不同的是,適用於動態規劃法求解的問題經分解得到的子問題往往不是互相獨立的,為了避免大量的重複計算,可以用乙個表來記錄所有已解決的子問題的答案。
動態規劃演算法適用於求解最優化問題,通常按照下面4個步驟設計:
(1)找出最優解的性質,並刻畫其結構特徵
(2)遞迴地定義最優值
(3)以自下而上的方式計算最優值
(4)根據計算最優值時得到的資訊,構造最優解
3. 說明結對程式設計的情況
我的結伴程式設計夥伴是閔莞怡,上次實驗課的程式設計題是最低通行費問題,在程式設計過程中只出現了一點小問題,比如陣列的初始化不對,遞迴表示式直接用乙個陣列來計算,有點複雜,最後理清楚思路以後,程式設計很順利。
演算法第三章作業
1.動態規劃是一種能夠減少重複運算的一種演算法,比較適合原問題能依賴於子問題解得,而子問題也能夠依賴於子子問題解得而出的問題。其次,動態規劃更適合於資料量較多的時候的一種演算法,當資料量沒有到達一定規模的時候,動態規劃演算法不能夠體現出足夠的優勢。如對於揹包問題的貪心演算法和動態規劃法 2.1 單調...
演算法第三章作業
我覺得動態規劃是一種分治法的偽高階型,它將乙個大問題可以分成若干個小問題後,解決子問題,然後將子問題的解插入到乙個表中,用乙個表來記錄所有的已經得到答案的子問題的解,後面就可以發現,無論子問題的解是否被用到,其都在表中,接著求問題便可以節省大量的時間。3 1m i 1 n 1 m i max 1 1...
演算法第三章作業
組員 高珞洋,何汶珊 之前在學習分治法的時候也有將其和動態規劃進行比較,動態規劃能夠解題的根本要求是原問題可以細分成子問題,且原問題的最優解必包含子問題的最優解。為了更明確上述條件,從而保證題目能夠運用動態規劃求解,通常需要兩步操作 明確問題具有最優子結構,並分解問題 找出遞推關係式 狀態轉移方程 ...