【问题标题】:Mathematical equation for number of valid sequences (having no two 1's together) of N-bit numberN 位数的有效序列数(没有两个 1 一起)的数学方程
【发布时间】:2011-06-23 16:45:28
【问题描述】:

我遇到了这个面试难题,想知道它的准确答案。

您可以生成 2^n 个不同的 n 位数字的二进制序列。在这些序列中,具有两个 1 的序列将被视为无效,否则将视为有效。

For example for N=3 sequences can be:
000 -> v 
001 -> v
010 -> v
011 -> iv
100 -> v
101 -> v
110 -> iv
111 -> iv       So output should be: 5

因此制定策略(提供给我的提示:f(n) 以 f(n-1) 表示),它可以判断 N 位数可以具有的有效序列数。

【问题讨论】:

    标签: bit mathematical-expressions


    【解决方案1】:

    更新

    原来是这样

    Answer(n bits) = fibonacci(n+2),如果 fibonacci(0) = 0,且 fibonacci(1) = 1


    分析

    1 位

    0 1

    2 位

    00 01 -- 10 11 // x

    现在你看,如果一个序列以 1 结尾,它只能再追加 0。

    3 位

    000 001 -- 010 011 // x -- 100 101

    一般来说,[n] 位中有多少个 0 和多少个 1

    f[1](0) = 1 = 斐波那契(2) = 斐波那契(1+1) f[1](1) = 1 = 斐波那契(1) = 斐波那契(1) f[n](0) = f[n-1](0) + f[n-1](1) = 斐波那契(n+1) f[n](1) = f[n-1](0) = 斐波那契(n) f[n] = f[n](0)+f[n](1) = 斐波那契(n+1) + 斐波那契(n) = 斐波那契(n+2) 斐波那契(0) = 0 斐波那契(1) = 1 斐波那契(2) = 1

    【讨论】:

    • 取 n=1: f(3) = f(2) + f(1) = 2*f(1) + f(0) = 2 (right)` 但是如果我们取 n =2:f(4) = f(3) + f(2) = 2*f(2) + f(1) = 4+1 = 5这不应该是3吗???
    • @pankiii, f(0) = 0, f(1) = 1, f(2) = 1, f(3) = 2, f(4) = 3. 你为什么拿f(2) = 2?
    • :( 是的,我把 f(2) 弄乱了 n=1 的结果……很抱歉;是的 f(2) = 1 和 2:F(4)=f(3 )+f(2)=2+1 = 3 ...解决方案很棒且合乎逻辑。-谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2018-03-06
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多