爬楼梯2,走一级或三级台阶(java)

在你面前有一个n阶的楼梯(n>=100且n<500),你一步只能上1阶或3阶。
请问计算出你可以采用多少种不同的方式爬完这个楼梯(到最后一层为爬完)。

要考虑n,n=100的时候,int类型long类型都溢出了,而且越来越大,要用BigInteger数据类型,

规律就是a[n]=a[n-1]+a[n-3],先列出前六个台阶的总的方式,找到规律,用递归会超时,直接用循环更快。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main
{
  public static void main(String[] args) throws Exception
  {    BufferedReader br
= new BufferedReader(new InputStreamReader(System.in));    int n = Integer.parseInt(br.readLine());    BigInteger[] count = new BigInteger[n];   count[0]=new BigInteger("1");   count[1]=new BigInteger("1");   count[2]=new BigInteger("2");   for(int i = 3;i < n;i++)   {   count[i] = count[i-1].add(count[i-3]);   }   System.out.print(count[n-1]); } }

链接:https://www.nowcoder.com/questionTerminal/1e6ac1a96c3149348aa9009709a36a6f?f=discussion
来源:牛客网

原文地址:https://www.cnblogs.com/lhh666/p/12060627.html