求出长度为n的二进制数中,没有相邻的1的个数。刚开始写了前几项,发现是斐波那契数列,就直接ac了。后来回过头来想,确实如此。fib[n] = fib[n - 1](结尾为0)+ fib[n - 2](结尾为1)
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[50];
void init()
{
a[0] = 1;
a[1] = 2;
for (int i = 2; i <= 45; i++)
a[i] = a[i - 1] + a[i - 2];
}
int main()
{
int n, t;
scanf("%d", &n);
init();
for (int i = 1; i <= n; i++)
{
scanf("%d", &t);
printf("Scenario #%d:\n", i);
printf("%d\n\n", a[t]);
}
}