zjut 1176

   zjut 1176 菲波那契数" - 博客后台管理 - 博客园
http://i.cnblogs.com/EditPosts.aspx?postid=3887297

#include<fstream>
#include<iostream>
#include<cmath>
using namespace std;
int main(int argc, char* argv[])
{
int a[47]={0,1,1};
int i,n;
for ( i=3;i<47;i++)
a[i]=a[i-1]+a[i-2];
while (cin>>n)
{
cout<<a[n]<<endl;
}
return 0;
}

 哎呀呀,开始用递归写了一个,调试的挺好的。一提交,惨了,time limit exceeded。看来还是不能偷懒。然后就在想,不递归这玩意儿不好弄啊。看了一下指导,明白了,先把第0项到第46项求出来,放在一个数组里,然后直接查就不会超时了。嗯,还是要注意题目的特别性。

用时:3ms

#include 
#define MAX 100

int n,fib[MAX],i;

int main() 

   
    fib[0]=0;     fib[1]=1; 
   
         i=2; 
    while(i<47) 
    { 
        fib[i]=fib[i-1]+fib[i-2]; 
        i++;   
    } 
    while(scanf("%d",&n)==1) 
    { 
      printf("%d/n",fib[n]); 
    } 
    return 0; 
}

原文地址:https://www.cnblogs.com/2014acm/p/3905858.html