zoukankan      html  css  js  c++  java
  • 01串

    一个数字 ,刚开始是1, 后面每一步进行如下操作:

    1替换成0

    0替换成01

    会得到如下串:

    第一次得到 1

    第二次得到 01

    第三次得到 010

    第四次得到 01001

    求第n次得到的数字中从左到右第p位数字是几?

    n<100

    思路一:

    直接拼接:

    https://www.geeksforgeeks.org/fibonacci-word/

    // program for nth Fibonacci word

    #include<bits/stdc++.h>

    using namespace std;

    // Returns n-th Fibonacci word

    string fibWord(int n)

    {

    string Sn_1 = "0";

    string Sn = "01";

    string tmp;

    for (int i=2; i<=n; i++)

    {

    tmp = Sn;

    Sn += Sn_1;

    Sn_1 = tmp;

    }

    return Sn;

    }

    // driver program

    int main()

    {

    int n = 6;

    cout << fibWord(n);

    return 0;

    发现大了根本不行,搜索了一下 Fibonacci Word,有直接生成的方法

    访问不了wiki,用下面的连接

    https://encyclopedia.thefreedictionary.com/Fibonacci+word

    #include<bits/stdc++.h>
    using namespace std;

    //https://www.geeksforgeeks.org/fibonacci-word/

    // Returns n-th Fibonacci word
    string fibWord(int n)
    {
        string Sn_1 = "0";
        string Sn = "01";
        string tmp;
        for (int i=2; i<=n; i++)
        {
            tmp = Sn;
            Sn += Sn_1;
            Sn_1 = tmp;
        }

        return Sn;
    }

    // https://encyclopedia.thefreedictionary.com/Fibonacci+word
    const double golden_ratio = 1.618;
    int calc_nth_fibWord(int n)
    {
        double x = 2 + floor(n*golden_ratio)- floor((n + 1)*golden_ratio);
        cout<<x;
        return x;
    }
    // driver program
    int main()
    {
        int n = 6;
        cout << fibWord(n) <<endl;
        for(int i=1;i<=21;i++)
        {
            calc_nth_fibWord(i);
        }
        cout<<endl;

        return 0;
    }

    计算出来和原来的对比,是一样的

  • 相关阅读:
    Filter and Listener
    Cookie Session
    怎样快速将一台电脑虚拟机导入另外一台电脑
    网页下载文件服务端代码
    图片验证码生成代码
    Request实战
    Response
    设置页眉页脚的距离
    页眉页脚的设置
    节的设置
  • 原文地址:https://www.cnblogs.com/cute/p/12957822.html
Copyright © 2011-2022 走看看