面试经典算法-上楼梯问题
上楼梯问题
【面试题】已知楼梯有20阶台阶,上楼可以一步上 1 阶,也可以一步上 2 阶,请编写一个函数计算一种有多少上楼梯的方式。
#include "stdio.h"
#include "math.h"#define MAX_STEPS 20 /*定义20个台阶的楼梯*/int Steps[MAX_STEPS] = {0}; /*Steps[i]等于1或者2,记录第i步登上的台阶数*/
int count = 0; /*记录上楼梯方案的数目*/void Upstairs(int footStep, int haveUpstairedCount, int steps) {/*参数footStep为当前要登的台阶数, haveUpstairedCount是已走过的阶数,steps为走过的步数*/int i;if (haveUpstairedCount + footStep == MAX_STEPS) { /*已走过的台阶数+当前要登的台阶数=20,得到一种上楼梯的方案*/Steps[steps] = footStep; /*记录下这一步登上的台阶数*/for (i=0; i<=steps; i++) { /*输出这中上楼梯的方案*/printf("%d ", Steps[i]);}getchar();printf("\n");count++;; /*累计上楼梯的方案数目*/return;}if (haveUpstairedCount + footStep > MAX_STEPS) { /*超过了楼梯的阶数,后续的解空间树不再探索*/return;}Steps[steps] = footStep; /*记录当前上楼梯的阶数*/haveUpstairedCount = haveUpstairedCount + footStep; /*记录目前已走过的台阶数*/steps++; /*步数加1*/for (i=1; i<=2; i++) { /*递归探索后续的分支*/Upstairs(i, haveUpstairedCount, steps);}
}void Upstairs_All() {Upstairs(1,0,0); /*从第一步上1个台阶开始探索解空间树*/Upstairs(2,0,0); /*从第一步上2个台阶开始探索解空间树*/
}main() {Upstairs_All();printf("共有%d种走法\n",count); /*输出上楼梯方案的总数*/getchar();
}
面试经典算法-上楼梯问题相关推荐
- 面试经典算法题集锦——《剑指 offer》小结
本文转载自: http://www.cnblogs.com/fanling999/p/7810558.html 作者:fanling999 转载请注明该声明. 从今年 3 月份开始准备找实习,到现在校 ...
- 【算法】PHP实现经典算法(上)
前言 下面的是通过PHP实现经典算法,并计算了耗时,可以通过耗时对比这几种算法的复杂度. 插入排序 冒泡排序 选择排序 并归排序 快速排序 CODE $arr = [];for ($i = 0; $i ...
- 面试经典算法题--爬楼梯 的六种解法
题目描述: 假设你正在爬楼梯,需要n步你才能到达顶部.但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? 六种解法: /*** 爬楼梯问题其实质就是斐波那契数列!*/ public cla ...
- 四道微软面试经典算法题
比较经典的四个算法题,目前只收集到相关的思路和个别题目的解法,不断更新中 1.一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现.0是例外,可以反复出现. 请设计一个算法, ...
- 面试经典算法-将大于2的某一个数分解成两个素数之和
将大于2的某一个数分解成两个素数之和 [面试题]输入一个大于2的偶数n,将n分解成为两个素数之和,有几对就输出几对.(注意 :1 不是素数) #include <stdio.h>/*子算法 ...
- 算法 - 上楼梯(跳台阶)
楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,走完n阶台阶共有多少种不同的走法? 假设n阶台阶有f(n)种走法,第1步有2种走法 如果上1阶,那就还剩n - 1阶,共f(n - 1)种走法 如 ...
- 经典算法——爬楼梯(解法归纳)(学习笔记)
问题分析 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?是引用 当n=1时,只需爬一个台阶,就是一种解法. 当n=2时,可以走两次 ...
- C语言编程左右对称,C语言经典算法 - 上三角、下三角、对称矩阵
搜索热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 说明 上三角矩阵是矩阵在对角线以下的元素均为0,即Aij = 0,i > ...
- 10个经典的C语言面试基础算法及代码
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数 ...
最新文章
- 简单搞定linux逻辑卷
- go mod require + replace解决本地包依赖问题
- matlab两个图共用一个x轴_如何在Matlab中插入两个X轴图
- GitHub 上 57 款最流行的开源深度学习项目【转】
- hdfs数据节点分发什么协议_HDFS主要节点解说(一)节点功能
- PADS Layout VX.2.3 制作PCB封装(Decal)时,导入DXF文件
- java反射异常之java.lang.NoSuchFieldException: school
- 新闻资讯java开发_新闻资讯app开发的功能与意义
- 国家一级计算机考试模拟题2012版,2012年计算机等级考试一级上机Word模拟题2
- 张近东发致家乐福中国员工内部信:唯有坚持、坚守才能取得更大的成功
- Mysql递归查询优化记录
- 耳机常用降噪技术分析
- 业务,大数据监控平台搭建
- 樊登读书会掌控读后感_樊登读书会观后感
- 用matlab算特征值,用Matlab用计算特征值和特征向量
- JAVA中计算五子棋平局的算法_输入五子棋棋盘判断输赢或平局—程序设计(C语言)...
- 用jQuery仿京东收货地址
- 精读《设计模式 - Prototype 原型模式》
- 奶块服务器维护多久,奶块服务器维护是什么意思quest; | 手游网游页游攻略大全...
- c++生成so调用LOGI