先占個坑吧...還有,csdn裡我打這麼多空格好難受- -(才不會說我是寫字板裡粘過來的)
滾動陣列的作用在於優化空間,主要應用在遞推或動態規劃中(如01揹包問題)。因為dp題目是乙個自底向上的擴充套件過程,我們常常需要用到的是連續的解,前面的解往往可以捨去。所以用滾動陣列優化是很有效的。利用滾動陣列的話在n很大的情況下可以達到壓縮儲存的作用。
出處(星號)
是啊是啊!想想之前揹包裡面前面的似乎是更新過就用不到了(當他被更新了之後)
是啊是啊!斐波那契這個是遞增的!
(優化空間..時間沒啥用所以)
常常用於dp...
這個**有點重要!
乙個dp,平常如果需要1000×1000的空間,其實根據dp的無後效性,可以開成2×1000,然後通過滾動,獲得和1000×1000一樣的效果。滾動陣列常用於dp之中,在dp過程中,我們在由乙個狀態轉向另乙個狀態時,很可能之前儲存的某些狀態資訊就已經無用了,例如在01揹包問題中,從理解角度講我們應開dp[i][j]的二維陣列,第一維我們存處理到第幾個物品,也就是階段了,第二維儲存容量,但是我們獲得dp[i],只需使用dp[i - 1]的資訊,dp[i - k],k>1都成了無用空間,因此我們可以將陣列開成一維就行,迭代更新陣列中內容,滾動陣列也是這個原理,目的也一樣,不過這時候的問題常常是不可能縮成一維的了,比如乙個dp[i][j]需要由dp[i - 1 ][k],dp[i - 2][k]決定,i(講的好清楚啊!!!所以貼一下..)
原**找不到了... 甩兩張圖先占個坑走人- --
還會回來的!...
我只是占個坑而已!!!(怕之後又忘了所以聊勝於無吧= =)
poj 2441 狀態壓縮 滾動陣列 剪枝DP
題意 有n 20 只牛和m 20 個籃球場,每個籃球場只能乙隻牛打,然後每只牛都有自己喜好的籃球場。現在問有多少種分配方法使得每只牛都能在自己喜歡的籃球場打球,並且這個球場只有它乙隻牛。解析 首先是狀壓 dp i state 表示的是第i隻牛球場狀態為state時的分配方法數。狀態轉移方程也很好推 ...
0 1揹包使用滾動陣列壓縮空間
所謂滾動陣列,目的在於優化空間,從上面的解法我們可以看到,狀態轉移矩陣使用的是乙個n v的陣列,在求解的過程中,我們可以發現,當前狀態只與前一狀態的解有關,那麼之前儲存的狀態資訊已經無用了,可以捨棄的,我們只需要空間儲存當前的狀態和前一狀態,所以只需使用2 v的空間,迴圈滾動使用,就可以達到跟n v...
康托展開和狀態壓縮
把乙個整數x展開成如下形式 x a n n 1 a n 1 n 2 a i i 1 a 2 1 a 1 0 其中,a為整數,並且0 a i 康托展開的應用例項 表示1,2,3,n的排 列如 按從小到大排列一共6個。123 132 213 231 312 321 代表的數字 1 2 3 4 5 6 也...