《演算法設計與分析》 第三章作業

2022-06-21 20:24:11 字數 736 閱讀 4496

動態規劃演算法與分治法類似,都是將求解問題分解成若干子問題,解決子問題,最後結合子問題得到原問題的解。但與分治法不同的是,這些分解的子問題往往不是互相獨立的,其內部存在某種聯絡,所以可以將子問題的解記錄在乙個表上,最後通過讀表的方式解決原問題。動態規劃適用於解最優化問題。

1.單調遞增最長子序列:用乙個陣列a【】來存數列,用dp【i】來表示以i下標結尾的數的最長子序列,則 

當(1 <= j < i且a【i】 > a【j】 )

dp[i] = max(dp[i], dp[j] + 1)

2.租用遊艇問題:用乙個二維陣列a【】【】來存各出租站之間的租金,用dp【i】【j】表示第i站到第j站的最小費用,則

當(2 <= i < j <= n)

dp[1][j] = min(dp[1][j] ,dp[1][i] + dp[i][j]

跟著隊友,特別是基礎好的隊友學習程式設計,效率確實大大的提高了很多,而且很多小問題也在隊友面前解決了。但是我們之間的實力懸殊過大,總會讓我有點懈怠,讓我覺得反正有他在,我隨隨便便做一些就ok,總是不求甚解。感覺自己沒有硬實力,所以以後我要自己獨立完成一些題目,盡量是自己解決,然後實在不會的地方在問自己的夥伴。這樣既能提公升自己又能少麻煩一下同伴,一石二鳥。respect.

演算法第三章作業

1.動態規劃是一種能夠減少重複運算的一種演算法,比較適合原問題能依賴於子問題解得,而子問題也能夠依賴於子子問題解得而出的問題。其次,動態規劃更適合於資料量較多的時候的一種演算法,當資料量沒有到達一定規模的時候,動態規劃演算法不能夠體現出足夠的優勢。如對於揹包問題的貪心演算法和動態規劃法 2.1 單調...

演算法第三章作業

我覺得動態規劃是一種分治法的偽高階型,它將乙個大問題可以分成若干個小問題後,解決子問題,然後將子問題的解插入到乙個表中,用乙個表來記錄所有的已經得到答案的子問題的解,後面就可以發現,無論子問題的解是否被用到,其都在表中,接著求問題便可以節省大量的時間。3 1m i 1 n 1 m i max 1 1...

演算法第三章作業

組員 高珞洋,何汶珊 之前在學習分治法的時候也有將其和動態規劃進行比較,動態規劃能夠解題的根本要求是原問題可以細分成子問題,且原問題的最優解必包含子問題的最優解。為了更明確上述條件,從而保證題目能夠運用動態規劃求解,通常需要兩步操作 明確問題具有最優子結構,並分解問題 找出遞推關係式 狀態轉移方程 ...