count all distinct binary strings without two consecutive 1's
我试图将自底向上的动态编程方法(在链接中提到的 )转换为递归关系,但是无法获得正确的输出。
#include<iostream>
#define n 4
using namespace std;
int bitstring(int N, int b = 0)
{
static int s = 0;
//termination condition
if (N == 1)
return 1;
if(b == 1)
{
s += bitstring(N - 1, 0);
}
if (b == 0)
{
s = bitstring(N - 1, 0) + bitstring(N - 1, 1);
}
return s;
}
int main()
{
cout << bitstring(n) << endl;
return 0;
}
对于N = 3 输出为 5
N = 3的插图
f(3,0) f(3,1)
/ \ |
f(2,0) f(2,1) f(2,0)
/ \ | / \
f(1,0) f(1,1) f(1,1) f(1,0) f(1,1)
| | | | |
1 1 1 1 1
答案 0 :(得分:0)
至少对于情况N==1
,您有两个序列[0]和[1]。
从极端情况开始可能更好^ _ ^
对于案例b==1
和b==0
,您正在对s
使用不同的操作,应该是这样吗?