zoukankan      html  css  js  c++  java
  • #2019120700019-LG 斐波那契数列

    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
    ",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
    ",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
    ",f[a]%1000);
    	}
    	return 0;
    } 
    
    要做就做南波万
  • 相关阅读:
    十天冲刺之三
    设计模式-模板方法模式
    设计模式-观察者模式
    设计模式-迭代子模式
    设计模式-责任链模式
    设计模式-门面模式
    1395. Count Number of Teams
    747. Largest Number At Least Twice of Others
    1160. Find Words That Can Be Formed by Characters
    1539. Kth Missing Positive Number
  • 原文地址:https://www.cnblogs.com/liuziwen0224/p/12000509.html
Copyright © 2011-2022 走看看