首页 > 代码库 > UVa 10450 - World Cup Noise
UVa 10450 - World Cup Noise
题目:构造一个01串,使得其中的1不相邻,问长度为n的串有多少中。
分析:数学,递推数列。
设长度为n的串有n个,则有递推关系:f(n)= f(n-1)+ f(n-2);
长度为n的结束可能是0或者1:
如果结束是0,则前面是0或者是1都可以所以是f(n-1);
如果结束是1,则前面的必然是0,则更前面的随意,所以是f(n-2);
这显然是Fib的递推公式,f(n)= Fib(n+1)。
说明:用long long防止溢出。
#include <iostream> #include <cstdlib> using namespace std; long long Fib[100]; int main() { Fib[1] = Fib[0] = 1LL; for (int i = 2 ; i < 55 ; ++ i) Fib[i] = Fib[i-1]+Fib[i-2]; int n,m; while (cin >> n) for (int i = 1 ; i <= n ; ++ i) { cin >> m; cout << "Scenario #" << i << ":\n" << Fib[m+1] << "\n\n"; } return 0; }
UVa 10450 - World Cup Noise
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。