zoukankan      html  css  js  c++  java
  • C语言 一些算法

    1,斐波那契数列

    ①递归 时间复杂度O(2^n)
    #include <stdio.h> int fib(int n){ if(n==1||n==2) return 1; return fib(n-1) + fib(n-2); } int main(){ int n; scanf("%d",&n); printf("%d ",fib(n)); return 0; }
    ②循环 时间复杂度O(n)
    #include <stdio.h>
    int fibonacci(int n){
      int num1=1, num2=1, num3=0,i;
      if (n <= 2){
        printf("斐波拉契数列的第%d项为:%d
    ",n,num1);
      }else{
        for (i = 2; i < n; i++){
          num3 = num1 + num2;
          num1 = num2;
          num2 = num3;
        }
        printf("斐波拉契数列的第%d项为:%d
    ", n, num3);
      }
      return 0;
    }
    
    int main(){
      int num=0;
      printf("请输入一个正整数:");
      scanf("%d", &num);
      fibonacci(num);
      return 0;
    }
    ③通项公式 时间复杂度O(1)
    F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(√5表示根号5)
    所以,任何斐波那契数都可以在O(1)时间内计算出来,但是有一点,因为牵涉到无理数,所以无法保证精度。
    ④还有矩阵法,那个暂时不会,以后看线性代数的时候补回来。
    奉上链接吧  http://blog.csdn.net/xygy8860/article/details/47087687
  • 相关阅读:
    基于XMPP协议的Android即时通信系
    codeforces 830 B Cards Sorting
    [SCOI2007]修车
    spoj GSS4
    hdu 3652 B-number
    【模版】多项式乘法 FFT
    hdu 3642 Get The Treasury
    hdu 1255 覆盖的面积
    hdu 4553 约会安排
    UVA-11992 Fast Matrix Operations
  • 原文地址:https://www.cnblogs.com/aiyr/p/7200396.html
Copyright © 2011-2022 走看看