假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
样例
比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法
样例
比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法
返回 3
import java.util.Scanner;
/**
*
* 假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
样例
比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法
返回 3
* @author Dell
*
*/
public class Test111 {
public static int climbStairs(int n)
{
if(n==1||n==2)
return n;
else
{
return climbStairs(n-1)+climbStairs(n-2);
}
}
public static int climbStairs1(int n)
{
int[] dp=new int[n+1];
dp[1]=1;
dp[2]=2;
for(int i=3;i<n+1;i++)
{
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(climbStairs1(n));
}
}