http://poj.org/problem?id=1953

题目大意:给定一个正整数n,确定该长度的不同吟唱模式的数量,即确定不包含相邻1的n位序列的数目。例如,对于n = 3,答案是5 (序列000,001,010,100,101是可以接受的,而011,110,111不是)。输入第一行包含场景的数量。对于每个场景,在一行中,您将得到一个小于45的正整数。每个场景的输出从包含“Scenario #i:”的一行开始,其中i是从1开始的场景的数量。然后打印一行包含没有相邻1的n位序列的序列。用空行终止该场景的输出。

也就是说,给出一个数n,那么n位二进制数有2的n次方种不同的取值,我们要找出1不相邻的种数。当n=1时可取(0,1),f[1]=1,g[1]=1,fib[1]= f[1]+ g[1]=2,当n=2时可取(00,01,10),可见是在n=1的基础上在以0结尾的取值后面加0或1,在以1结尾的取值后面加0,f[2]=f[1]+g[1]=2,g[2]=f[1]=1,fib[2]=3

算法思想:递归算法,这里我们使用一次性计算的迭代法,改进算法的效率。设f[i]表示n=i时以0结尾的取值数,g[i]表示n=i时以1结尾的取值数,fib[i]表示n=i时的取值数。以0结尾可以在后面加0或1,以1结尾可以在后面加0,可以得到递归方程:

1)      f[i]=g[i-1]+f[i-1];  i>1

2)      g[i]=f[i-1];  i>1

3)      fib[i]=f[i]+g[i]; i>0

4)      f[1]=1;  i=1

5)      g[1]=1;  i=1

观察递归方程可以发现,这是一个斐波那契数列,(2,3,5,8,13…)

 #include <iostream>
using namespace std;
int main()
{
int fib[];// 没有相邻的1的n位序列的序列数
int f[],g[];
f[]=;
g[]=;
fib[]=f[]+g[];
for(int i=;i<=;i++)
{
f[i]=f[i-]+g[i-];
g[i]=f[i-];
fib[i]=f[i]+g[i];
}
cin>>fib[];//案例数
for(int i=;i<=fib[];i++)
{
int temp;
cin>>temp;
cout<<"Scenario #"<<i<<":\n"<<fib[temp]<<endl<<endl;
}
return ;
}

poj1953 World Cup Noise的更多相关文章

  1. POJ-1953 World Cup Noise(线性动规)

    World Cup Noise Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16374 Accepted: 8097 Desc ...

  2. Poj 1953 World Cup Noise之解题报告

    World Cup Noise Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 16369   Accepted: 8095 ...

  3. POJ 1953 World Cup Noise

    World Cup Noise Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 14397   Accepted: 7129 ...

  4. poj 1953 World Cup Noise (dp)

    World Cup Noise Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 16774   Accepted: 8243 ...

  5. POJ 1953 World Cup Noise(递推)

    https://vjudge.net/problem/POJ-1953 题意:输入一个n,这n位数只由0和1组成,并且不能两个1相邻.计算共有多少种排列方法. 思路:递推题. 首先a[1]=2,a[2 ...

  6. UVa 10450 - World Cup Noise

    题目:构造一个01串,使得当中的1不相邻,问长度为n的串有多少中. 分析:数学,递推数列. 设长度为n的串有n个.则有递推关系:f(n)= f(n-1)+ f(n-2): 长度为n的结束可能是0或者1 ...

  7. poj - 1953 - World Cup Noise(dp)

    题意:n位长的01序列(0 < n < 45),但不能出现连续的两个1,问序列有多少种. 题目链接:id=1953" target="_blank">h ...

  8. 别人整理的DP大全(转)

    动态规划 动态规划 容易: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...

  9. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

随机推荐

  1. POJ 2585.Window Pains 拓扑排序

    Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1888   Accepted: 944 Descr ...

  2. WCF TOOL CODE

    .HTML <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WCFTool. ...

  3. 设计模式之flyweight享元模式

    运用共享技术支持大量细粒度对象的使用 Flyweight模式(享元) Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模 ...

  4. cuda使用

    import torchx = torch.randn(2, 3)x = x.cuda() print (x)#最简单的cuda使用,但是感觉好慢啊

  5. Metro Revealed: Building Windows 8 apps with XAML and C# 阅读笔记

    第一章1.1.3中提到 Jesse Liberty 的<Pro Windows 8 Development with XAML and C#>,这是一本关于win8更全面的书,以后看.

  6. 2018.07.10 NOIP模拟 sort(单调队列)

    Sort 题目背景 SOURCE:NOIP2016-RZZ-4 T1 题目描述 给你一个长度为 n 的排列,小W每次可以选择一个数,做以下操作: 不断把这个数与它右边的数交换. 当它右边没有数,或它右 ...

  7. 优秀前端工程师必备: cookie的增删改查Demo!

    1 cookie可以很好地解决微信浏览器登录状态的保存,具体教程看下面链接: https://www.cnblogs.com/autoXingJY/p/10456767.html 2 参考了w3c等的 ...

  8. BZOJ 1008 [HNOI2008]越狱 (简单排列组合 + 快速幂)

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 10503  Solved: 4558[Submit][Status ...

  9. UVaLive 2531 The K-League (网络流)

    题意:有 n 个队伍进行比赛,每个队伍比赛数目是一样的,每场恰好一个胜一个负,给定每个队伍当前胜的场数败的数目,以及两个队伍剩下的比赛场数,问你冠军队伍可能是哪些队. 析:对每个队伍 i 进行判断是不 ...

  10. HDU 3361 ASCII (水题,不说什么了)

    题意:给你n个十进制数,让你输出相应的ASCII. 析:无,没说的,直接输出就好了. 代码如下: #include <iostream> #include <cstdio> # ...