滾動陣列詳解

2021-08-04 09:00:49 字數 609 閱讀 1103

【滾動陣列】 可以想象成顯示屏,對於有很多的數字來說,每次只顯示有限的數字,用完(顯示完)就向後移動一位,顯示的數量不變,但是在卡記憶體比較緊的題中,可以節省很多空間。

最典型的就是斐波那契數列,普通的求解方法不外乎就是用遞推式f[i]=f[i-1]+f[i-2],但是這個如果資料量大的話會爆記憶體,而用滾動陣列的方法可以用3個單位大小的空間求得解,這樣就節省了很多的空間。

斐波那契數列普通解法:

#include#includeusing namespace std;

int f[100];

int ff(int n)

int main()

return 0;

}

滾動陣列解法:

#includeusing namespace std;

int f[3];

int ff(int n)

return f[2];

}int main()

return 0;

}

這樣解釋就很明白了,滾動陣列一般在dp題和狀態壓縮演算法方面用的多,而且優化後效率很高,推薦使用。

筆記 滾動陣列!

滾動陣列。對於我這種不會用結果怕各種mle和各種tle的人來說確實是一向短處 滾動的實質 膜法光輝 霧 吐槽不多說現在我們來看一下 乙個dp,平常如果需要1000 1000的空間,其實根據dp的無後效性,可以開成2 1000,然後通過滾動,獲得和1000 1000一樣的效果。滾動陣列常用於dp之中,...

Top Secret Task dp 滾動陣列

傳送門 題目 dp i j k 表示 考慮到第i個數 計算前j個數的和 進行了k次操作 則有若不把第i個數放入前j個數中 dp i j k dp i 1 j k 若把第i個數放入前j個數中 至少需要把第i個移到第j個,即進行i j次操作 if k i j dp i j k dp i 1 j 1 k ...

打家劫舍(滾動陣列)

滾動陣列是dp中的一種程式設計思想。簡單的理解就是讓陣列滾動起來,每次都使用固定的幾個儲存空間,來達到壓縮,節省儲存空間的作用。比如斐波那契額數列 d 0 1 d 1 1 for i 2 i 80 i d i d i 1 d i 2 你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,...