美文网首页
算法练习——上台阶方案

算法练习——上台阶方案

作者: 之安z | 来源:发表于2017-06-27 17:14 被阅读112次

计划了很久的东西终于要开始了,有哪些不足有望各位大佬指点迷津

题目:

一个十级台阶,你在第一级台阶,每次能往上走一级或者两级台阶,问走到第十级台阶有多少种方案?

分析:

  1. 10级楼梯,可以走N步,每前进一步都是一个子过程,用递归算法会比较简单;
  2. 递归出口为超出或者到达第10级楼梯;
  3. 递归入口就是两种不同尝试,尝试向前走一级或者两级。

C代码:

#include<stdio.h>
//记录方案个数
int count;
//记录到第几步
int loc;
//记录每一步走的是哪一级
int book[10];
//打印所有步级
void print() {
    int i=0;
    for (i=0; i<=loc; i++) {
        printf("%02d ", book[i]);
    }
    printf("\n");
}
//递归遍历每一步的情况
void steps(int step) {
        //当跨越第10级不计数
    if (step > 10) {
        return;
    }
        //刚好到达第10级
    if (step == 10) {
        book[loc] = 10;
        print();
        count++;
        return;
    }
        //这一步有效,赋值给记录数组,并loc+1代表前进一步
    book[loc] = step;
    loc++;
        //尝试只上一级台阶
    steps(step + 1);
        //尝试上两级台阶
    steps(step + 2);
        //尝试结束回退上一步
    loc--;
}

int main() {
    int i;
    for (i = 0; i<10; i++) {
        book[i] = 0;
    }   
    loc = 0;
    count = 0;
    steps(1);
    printf("\nHere are %d ways to get to the top!\n", count);
    return 0;
}

相关文章

  • 算法练习——上台阶方案

    计划了很久的东西终于要开始了,有哪些不足有望各位大佬指点迷津 题目: 一个十级台阶,你在第一级台阶,每次能往上走一...

  • 递归算法:上台阶算法

    1、环境配置: 系统:win10 编程语言:C++ 编译器:DevC++ 2、算法思想: 问题:上台阶问题就是每次...

  • 上台阶问题

    上台阶问题 有n阶台阶(n>0),小明一次可以上一步,或者两步,请问小明有多少种上台阶的方案? 设小明有种上台阶方...

  • 练习笔记

    练习200个基本数据机构及算法问题 解答思路: 分析问题的解决方案; 设计解决问题的方法及结构; 设计使用的算法及...

  • 「图论」练习

    0x6B「图论」练习 POJ3463 Sightseeing求次短路和方案数统计。需要在dij算法松弛时进行修正。...

  • 算法习题分析(一):上台阶

    有一楼梯共m级,刚开始时,你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少种走法?(注:规定从一级到一...

  • [算法] - 上台阶问题(动态规划)

    1. 问题 有十级台阶,每次只能上一级或者两级,问一共有多少种组合。 2. 代码 3. 参考 漫画:什么是动态规划...

  • 目录

    数学基础 算法理论 算法工具 业界成熟方案 工程技能 trick LeetCode/Kaggle

  • 面试官:生成订单30分钟未支付,则自动取消,该怎么实现?

    了解需求 方案 1:数据库轮询 方案 2:JDK 的延迟队列 方案 3:时间轮算法 方案 4:redis 缓存 方...

  • AES+RSA组合算法 接口参数加解密

    了解此方案原理前,先了解下AES算法和RSA算法的差异 AES+RSA算法 AES 算法 AES 算法是一种对称加...

网友评论

      本文标题:算法练习——上台阶方案

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