滚动数组详解

来源:互联网 发布:淘宝卖家页面生成器 编辑:程序博客网 时间:2024/06/04 20:07

  【滚动数组】 可以想象成显示屏,对于有很多的数字来说,每次只显示有限的数字,用完(显示完)就向后移动一位,显示的数量不变,但是在卡内存比较紧的题中,可以节省很多空间。

 

  最典型的就是斐波那契数列,普通的求解方法不外乎就是用递推式f[i]=f[i-1]+f[i-2],但是这个如果数据量大的话会爆内存,而用滚动数组的方法可以用3个单位大小的空间求得解,这样就节省了很多的空间。


 斐波那契数列普通解法:

 

#include<iostream>#include<cstdio>using namespace std;int f[100];int ff(int n){f[0] = 0;f[1] = 1;f[2] = 1;for(int i = 3; i <= n; ++i)f[i] = f[i - 1] + f[i - 2];return f[n];}int main(){int t, n;scanf("%d", &t);while(t--){scanf("%d", &n);printf("%d\n", ff(n));}return 0;}
 


 滚动数组解法:

 

#include<cstdio>using namespace std;int f[3];int ff(int n){f[1] = 0;f[2] = 1;for(int i = 2; i <= n; ++i){f[0] = f[1];f[1] = f[2];f[2] = f[0] + f[1];}return f[2];}int main(){int t, n;scanf("%d", &t);while(t--){scanf("%d", &n);printf("%d\n", ff(n));}return 0;}

 这样解释就很明白了,滚动数组一般在DP题和状态压缩算法方面用的多,而且优化后效率很高,推荐使用。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 马桶被玉米棒堵了怎么办 雪糕棒掉马桶里了怎么办 食用色素吃多了怎么办 蜡笔弄到指甲里怎么办 小孩把彩笔吃了怎么办 宝宝吃了水彩笔怎么办 宝宝不小心吃了蜡笔怎么办 小孩把蜡笔吃了怎么办 宝宝吃了记号笔怎么办 二年级的孩子不太爱看书怎么办 数字油画涂错了怎么办 白墙上被蜡笔画起来怎么办 衣服上的油画棒怎么办 蜡笔要是涂错了怎么办 蜡笔颜色涂错了怎么办 书被蜡笔涂了怎么办 白灰墙上被蜡笔涂了怎么办 电器上涂了彩色蜡笔怎么办 3d渲大图慢怎么办 23岁就眼皮下垂怎么办 手被猫咪抓破了怎么办 有幻想症的人怎么办 做事不专心老走神怎么办 小朋友做作业老发呆走神怎么办? 小朋友总是上课走神发呆怎么办 21岁精神心急了怎么办 一直有人阻止我做事怎么办 安装了渲染su找不到怎么办 su室内渲染很暗怎么办 su未响应未保存怎么办 电脑工作栏没了怎么办 ps工作栏没了怎么办 草图大师文件太大打不开怎么办 su模型保存后不见了怎么办 墨汁溅到衣服上怎么办 黑裤子溅上白色颜料怎么办 解码器上墙后图像放大了怎么办 宝宝把墙画了怎么办 孩子画画勾线笔过敏怎么办 微信语音撤回了怎么办? 小天才电话手表充不上电怎么办