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;
    } 
    
    要做就做南波万
  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/liuziwen0224/p/12000509.html
Copyright © 2011-2022 走看看