天天看点

hdu2563 统计问题 (动态规划)

统计问题

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 6664    Accepted Submission(s): 3932

Problem Description

在一无限大的二维平面中,我们做如下假设:

1、  每次只能移动一格;

2、  不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);

3、  走过的格子立即塌陷无法再走第二次;

求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。

Input

首先给出一个正整数C,表示有C组测试数据

接下来的C行,每行包含一个整数n (n<=20),表示要走n步。

Output

请编程输出走n步的不同方案总数;

每组的输出占一行。

Sample Input

2

1

2

Sample Output

3

7

Author

yifenfei

Source

​​绍兴托普信息技术职业技术学院——第二届电脑文化节程序设计竞赛​​

Recommend

yifenfei   |   We have carefully selected several similar problems for you:  

​​2561​​​ 

​​​2562​​​ 

​​​2564​​​ 

​​​2565​​​ 

​​​2566​​ 

代码:

#include<cstdio>
using namespace std;

typedef long long LL;
const int maxn=20;
LL f[maxn+10];

int main()
{
  int t,n,i;
  f[1]=3,f[2]=7;
  for(i=3;i<=maxn;i++)f[i]=f[i-1]*2+f[i-2];
  scanf("%d",&t);
  while(t--)
    {
      scanf("%d",&n);
      printf("%I64d\n",f[n]);
  }
  return 0;
}