1043 - 统计方案
时间限制 : 1 秒
内存限制 : 32 MB
在一无限大的二维平面中,我们做如下假设:
1、每次只能移动一格;
2、不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);
3、走过的格子立即塌陷无法再走第二次。
求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。
题目输入
首先给出一个正整数C,表示有C组测试数据。
接下来的C行,每行包含一个整数n(n<=20),表示要走n步。
题目输出
请编程输出走n步的不同方案总数;
每组的输出占一行。
输入/输出样例
输入格式
2 1 2
输出格式
3 7
C语言解答
#include<stdio.h> int main() { int c,n,i,a[20]; a[0]=3; a[1]=7; for(i=2;i<20;i++) a[i]=a[i-1]*2+a[i-2]; scanf("%d",&c); while(c--) { scanf("%d",&n); printf("%d\n",a[n-1]); } return 0; }
C++解答
#include<stdio.h> int main() { int c,n,i,a[20]; a[0]=3; a[1]=7; for(i=2;i<20;i++) a[i]=a[i-1]*2+a[i-2]; scanf("%d",&c); while(c--) { scanf("%d",&n); printf("%d\n",a[n-1]); } return 0; }
Java解答
import java.util.Scanner; public class Main{ public static void main(String arg[]) { Scanner cin=new Scanner(System.in) ; int a[]=new int[20]; a[0]=3; a[1]=7; for(int i=2;i<20;i++) a[i]=a[i-1]*2+a[i-2]; int c,j; c=cin.nextInt(); while (cin.hasNext()) {for(int i=0;i<c;i++) {j=cin.nextInt(); System.out.println(a[j-1]); } }}}
Python解答
# coding=utf-8 a=int(input()) for i in range(a): b=int(input()) n=1 m=1 L=0 R=0 for j in range(b): L=n+m R=n*2+m n=L m=R print(R)