我遇到了这个采访难题,想知道它的准确答案。
您可以生成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位数可以有多少个有效序列。
答案 0 :(得分:2)
原来是
答案(n位)=斐波那契(n + 2),如果斐波纳契(0)= 0,则斐波那契(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 = fibonacci(2) = fibonacci(1+1) f[1](1) = 1 = fibonacci(1) = fibonacci(1) f[n](0) = f[n-1](0) + f[n-1](1) = fibonacci(n+1) f[n](1) = f[n-1](0) = fibonacci(n) f[n] = f[n](0)+f[n](1) = fibonacci(n+1) + fibonacci(n) = fibonacci(n+2) fibonacci(0) = 0 fibonacci(1) = 1 fibonacci(2) = 1