【滾動陣列】 可以想象成顯示屏,對於有很多的數字來說,每次只顯示有限的數字,用完(顯示完)就向後移動一位,顯示的數量不變,但是在卡記憶體比較緊的題中,可以節省很多空間。
最典型的就是斐波那契數列,普通的求解方法不外乎就是用遞推式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 你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,...