码迷,mamicode.com
首页 > 其他好文 > 详细

#2019120700019-LG 斐波那契数列

时间:2019-12-07 10:17:32      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:斐波那契   ems   for   i++   size   stream   数列   set   ring   

P1962 P3986等基础模板

1 递归(自调用)

//加入优化 
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
int fib[5005];
int f(int g){
    if(g==1||g==2) return 1;
    if(fib[g]!=-1) return fib[g];
    fib[g]=f(g-1)+f(g-2);
    return fib[g];
} 
int main( ){
    //memset(fib,-1,sizeof(fib));
    for(int i=1;i<=5005;i++) fib[i]=-1; 
    int a;
    int n;
    scanf("%d",&n);
    while(n--){
        scanf("%d",&a);
        printf("%d\n",f(a));    
    }
    return 0;
} 

2 递推 (先读入后递归)

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

3 递推(先递归后读入)

#include<cstdio>
#include <cstring>
using namespace std;
    int f[1000005];//写在这里就能正常运行 
int main( ){
//int f[1000005] 如果写在main里面,那么会爆 
    int n;
    scanf("%d",&n);
    memset(f,0,sizeof(f));
    f[1]=1,f[2]=1;
        for(int i=3;i<=1000005;i++){
        f[i]=f[i-1]%1000+f[i-2]%1000;
}
    while(n--){
        int a=0;
        scanf("%d",&a);
        printf("%d\n",f[a]%1000);
    }
    return 0;
} 

#2019120700019-LG 斐波那契数列

标签:斐波那契   ems   for   i++   size   stream   数列   set   ring   

原文地址:https://www.cnblogs.com/liuziwen0224/p/12000509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!