Fibonacci数
Time Limit:1000MS Memory Limit:32768K
Description:
有一些整数(≤46),输出以这些整数为序数的第n项fibonacci数。文件中的数据可能上万,但要求运行时间不超过1秒钟。
注:f(0) = 0; f(1) = 1; f(n) = f(n-1) + f(n-2).
Sample Input:
5
6
7
8
9
40
Sample Output:
5
8
13
21
34
102334155
Source
ZJUT1029
如果我们使用递归或分治法的思想,可以得到代码:
#include<stdio.h>
int f(int n){
if(n == 0)
return 0;
else if(n == 1)
return 1;
return f(n - 1) + f(n - 2);
}
int main(){
int n;
while(scanf("%d", &n) != EOF){
printf("%d\n", f(n));
}
return 0;
}
但这段代码的结果必定是TLE,因为问题的子问题大量重复,即:
f(n)
= f(n-1) + f(n-2)
= f(n - 2) + f(n - 3) + f(n - 1) + f(n - 2)
= f(n - 3) + f(n - 4) + f(n - 4) + f(n - 5) + f(n - 2) + f(n - 3) + f(n - 3) + f(n - 4)
= ...
这样下去,当n比较大时,运算量将是极为恐怖的,我们可以用经典的空间换时间的思想,将数列前两位先储存到数组中,后面的斐波那契数直接通过已储存的数字相加得出,用户输入时直接从数组读取,这样便可以节省出大量的时间:
原文地址(本人博客):http://lanfei.sinaapp.com/2012/04/457.html
欢迎访问交流。
分享到:
相关推荐
ACM_算法模板集史上最完整收藏版223页全免费版.pd
杭电hdu acm资料所用杭电的acm题
noi试题和解析,对于参加acm非常有帮助
浙江大学ACM题解JU_ACM_All_Anwer,里面一本非常好的chm电子书,浙大的所有ACM题及题解都在了,对学习ACM的朋友非常的好~还等什么呢?
ACM__ICPC__重要补充知识.doc
Pascal acm_timus_ural_1148.pas
Pascal acm_timus_ural_1099.pas
ACM_基础篇
ACM,竞赛题目,我已经在上面测试过了,可以用,题目是ARGUS,希望大家可以喜欢,花了长时间才弄好的
ACM_竞赛试题,对于那些参加各种比赛,特别是ACM大赛的人会有很大帮助
ACM的重要PPT资料,对初学者非常有益处
一些关于ACM算法的资料,包括5种算法的详细讲解和ACM题型分类以及一些基础题目
ACM_计算几何_源码.pdf
ACM_String.
ACM_贪心.
杭电 hdu acm 第1084题的解法,ac过了,是一位学长教我的.内有一些中文说明.
ACM_Java 速成,重点讲述了JAVA的基本运用和大数类,以及JAVA中进制转化函数,对ACMer学习JAVA大有帮助
The 2014 ACM-ICPC Asia Beijing Regional Contest
ACM_算法模板集史上最完整收藏版223页 ACM_算法模板集史上最完整收藏版 ACM_算法模板集史上最完整收藏版
2004ACM国际大学生程序设计决赛题目