2141 - 上楼梯

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

现在有 N 阶楼梯,小明上楼梯时一次只能上 一阶 或者 两阶 ,小明想知道上完这 N 阶楼梯最多有多少种方法。聪明的程序员们能帮助他算算吗?

题目输入

第一行输入一个 T ,表示有T组测试数据,每组测试数据有一个整数N,表示有N阶楼梯。

题目输出

输出上完N阶楼梯最多的方法数,每组测试数据占一行。(这里保证正确的结果不超过32位整型的范围)

输入/输出样例

输入格式

3
0
2
5

输出格式

1
2
8

C语言解答

#include <stdio.h>
int main() {
    int f[50] ;
    f[0] = f[1] = 1 ;
    for( int i = 2 ; i < 46 ; i ++ ) {
        f[i] = f[i-1] + f[i-2] ;
    }
    int T ; scanf("%d" , &T ) ;
    while( T -- ) {
        int n ; scanf("%d" , &n ) ;
        printf("%d\n" , f[n] ) ;
    }
    return 0 ;
}

C++解答

#include<stdio.h>

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

Java解答

import java.util.*;
public class Main {
	public int n;
	
	public int ci=0;
	int[] A;
	
	public Main() {
		Scanner sc=new Scanner(System.in);
		int c=sc.nextInt();
		for(int j=0;j<c;j++) {
			n=sc.nextInt();
			if(n<=1) {
				System.out.println(1);
				continue;
			}
			A=new int[n+1];
			A[0]=1;A[1]=1;
			for(int i=2;i<=n;i++) {
				A[i]=A[i-1]+A[i-2];
			}
			System.out.println(A[n]);
		}
		
	}


	public static void main(String[] args) {
		Main main=new Main();
	}

}