赛码网--上台阶(Java实现)(斐波那契数列)

题目描述
									

有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?

注:规定从一级到一级有0种走法。

输入

输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。

样例输入

2

2

3

输出

对于每个测试实例,请输出不同走法的数量。

样例输出

1

2

解题思路:这个题目同样也是一个数列题目。不算第一级台阶,所以每次输入的时候,我都减了1,并提前对第一级台阶提前处理。当不是第一级台阶的时候,首先对2取整,算出数字包含2的个数,在对2取余,算出的是1的个数。这时候的题目就转换为了一个数学中组合问题。利用一个循环,算出2的取法,每次循环2的个数减一,相应的1的个数加2。说到这里应该就明白了我的思路了。。。

代码:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class Main {
    public static long fac(int n){
        if (n==0||n==1)
            return 1;
        else
            return n*fac(n-1);
    }
    public static long minfac(int c,int n){
        long sum = 1;
        for(int i=0;i<n;i++)
            sum*=(c-i);
        //System.out.println(sum);
        return sum;
    }
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        for(int i=0;i<N;i++){
            int m = sc.nextInt()-1;
            if(m==0){
                System.out.println(0);
                continue;
            }
            int count = 0;
            int numOftwo = m/2;
            int numOfone = m%2;
            while(numOftwo>0){
                count+=minfac(numOfone+numOftwo,numOftwo)/fac(numOftwo);
                numOftwo--;
                numOfone+=2;
            }
            count++;
            System.out.println(count);
        }

    }
}

交上去之后,我又看了下大佬的代码,原来这个题目其实就是一个斐波那契数列。我尝试着列了一下:
1--0

2--2

3--3

4--5

5--8

···

过然满足斐波那契数列的规律。orz

代码:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Main m = new Main();
		while(sc.hasNext()) {
			int num = sc.nextInt();
			for(int i=0; i<num; i++) {
				System.out.println(m.Fan(sc.nextInt()));
			}
		}
	
	}
	public int Fan(int n) {
		if(n == 1) return 0;
		if(n == 2) return 1;
		if(n == 3) return 2;
		return Fan(n-1)+Fan(n-2);
	}
}

猜你喜欢

转载自blog.csdn.net/yong_zi/article/details/81545767