题目描述:
小月从北京出发,自驾去大理,沿途有n个景点可供浏览,每天只能游玩1~2个景点,在不走回头路的情况下,问有多少种游玩的方式。
示例:
输入
4
输出
5
这个题一开始想复杂了,把组合都加进去了,调试了半天也只通过60%,笔试结束后才反应过来,这题就是考的力扣原题 70. 爬楼梯
先附上ac的代码:(动态规划和递归均可)
public int climbStairs(int n) {
if(n<=2){
return n;
}
int[] dp = new int[n+1];
dp[1] = 1;
dp[2] = 2;
for(int i=3; i<=n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
再附上自己调的只通过60%的脑残代码:
public class demo1 {
public static void main(String[] args) {
int n = 5; //举例测试
long a = n;
long b = 0;
long sum = 0;
for(long i=0; i<=n/2; i++){
a = n-2*i;
b = i;
long num;
if(a==0 || b==0){
num = 1;
sum += num;
}else{
num = jiecheng(a+b)/(jiecheng(a)*jiecheng(b));
sum += num;
}
}
System.out.println(sum);
}
public static long jiecheng(long num){
long res = 1;
if(num == 1){
return res;
}else{
for(long i=2; i<=num; i++){
res *= i;
}
}
return res;
}
}
一整个呆住,希望以后自己学知识能够融会贯通!!!