7-1 單調遞增最長子序列
設計乙個o(n2)時間的演算法,找出由n個數組成的序列的最長單調遞增子串行。
輸入格式:
輸入有兩行: 第一行:n,代表要輸入的數列的個數 第二行:n個數,數字之間用空格格開
輸出格式:
最長單調遞增子串行的長度
輸入樣例:
在這裡給出一組輸入。例如:
51 3 5 2 9
輸出樣例:
在這裡給出相應的輸出。例如:
41.1 根據最優子結構性質,列出遞迴方程式
dp[i]=max(dp[j],dp[i]-1)+1;
1.2 給出填表法中表的維度、填表範圍和填表順序。
所填的表為陣列,維度:1維 填表範圍:01.3 分析該演算法的時間和空間複雜度
兩重迴圈,所以空間複雜度為o(n),時間複雜度為o(n²)。
2. 你對動態規劃演算法的理解
首先了解什麼是問題的最優子結構,如何找到最優子結構。動態規劃演算法具有最優子結構、子問題重疊、邊界和子問題獨立四個性質。將乙個問題拆分成幾個子問題,分別求解這些子問題,即可推出大問題的解。而動態規劃的優勢在於,動態規劃防止了子問題的重複計算,每個問題只計算一次,自底向上地求出原問題的解。
3. 說明結對程式設計情況
跟結對程式設計的夥伴的想法有時可能相差較大,這個時候都是互相講解各自的解題思路,互相完善,在此同時,不同的思路也多少有共通的地方,或者是互相彌補,這使得編的程式更經得起檢驗。
演算法第三章作業 單調遞增最長子序列
1.1 根據最優子結構性質,列出遞迴方程式 dp i 表示以a i 為結尾的最長子序列,因為必包含自己,所以均初始化為1。dp i max dp j dp i 1 1 1.2 給出填表法中表的維度 填表範圍和填表順序。表的維度是1,填表範圍為1 n,填表順序為從左往右。1.3 分析該演算法的時間和空...
演算法第三章作業
1.動態規劃是一種能夠減少重複運算的一種演算法,比較適合原問題能依賴於子問題解得,而子問題也能夠依賴於子子問題解得而出的問題。其次,動態規劃更適合於資料量較多的時候的一種演算法,當資料量沒有到達一定規模的時候,動態規劃演算法不能夠體現出足夠的優勢。如對於揹包問題的貪心演算法和動態規劃法 2.1 單調...
演算法第三章作業
我覺得動態規劃是一種分治法的偽高階型,它將乙個大問題可以分成若干個小問題後,解決子問題,然後將子問題的解插入到乙個表中,用乙個表來記錄所有的已經得到答案的子問題的解,後面就可以發現,無論子問題的解是否被用到,其都在表中,接著求問題便可以節省大量的時間。3 1m i 1 n 1 m i max 1 1...