美文网首页
数据结构与算法 练习(六)

数据结构与算法 练习(六)

作者: E术家 | 来源:发表于2020-04-20 17:26 被阅读0次
    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的⽅法可以爬到楼顶呢?注意:给定 n 是⼀个正整数
    示例1:

    输⼊: 2
    输初: 2
    解释: 有2种⽅法可以爬到楼顶

    1. 1阶+1阶
    2. 2阶
    示例2:

    输⼊: 3
    输初: 3
    解释: 有3种⽅法可以爬到楼顶

    1. 1阶+1阶+1阶
    2. 1阶+2阶
    3. 2阶+1阶
    递归求解法
    int ClimbStairs_1(int n){
        
        if (n<1)  return 0;
        if (n == 1) return 1;
        if (n == 2) return 2;
        
        return ClimbStairs_1(n-1) + ClimbStairs_1(n-2);
    }
    
    动态规划法
    int ClimbStairs(int n){
        if(n==1) return 1;
        int temp = n+1;
        int *sum = (int *)malloc(sizeof(int) * (temp));
        sum[0] = 0;
        sum[1] = 1;
        sum[2] = 2;
        
        for (int i = 3; i <= n; i++) {
            sum[i] = sum[i-1] + sum[i-2];
        }
        
        return sum[n];
    }
    

    相关文章

      网友评论

          本文标题:数据结构与算法 练习(六)

          本文链接:https://www.haomeiwen.com/subject/pkxjihtx.html