2141 - 上楼梯
时间限制 : 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(); } }