当前位置: 首页 > news >正文

java面试题,上楼梯有多少种方式

java面试题,上楼梯有多少种方式

题目:一个小孩上一个N级台阶的楼梯,他可以一次走1阶、2阶或3阶,那么走完N阶有多少种方式。

很自然的想法是使用递归:

public class Test04 {

public static int countWays(int n) {

if(n < 0) {

return 0;

}

else if(n == 0) {

return 1;

}

else {

return countWays(n - 1) + countWays(n - 2) + countWays(n - 3);

}

}

public static void main(String[] args) {

System.out.println(countWays(5)); // 13

// 11111, 1112, 1121, 1211, 122, 131, 113, 23, 221, 2111, 212, 32, 311

}

}

然而,这里的递归是一个头递归,也就是说要先递归再回溯(编译器无法将其优化为一个循环结构),而且是将三个递归的结果进行合并,这样的话算法的运行时间呈指数增长(渐近时间复杂度为O(3^N))。可以利用动态规划的思想对递归进行优化,其代码如下所示:

public class Test04 {

public static int countWaysDP(int n) {

int[] map = new int[n + 1];

for (int i = 0; i < map.length; i++) {

map[i] = -1;

}

return countWaysDP(n, map);

}

private static int countWaysDP(int n, int[] map) {

if (n < 0) {

return 0;

}

else if (n == 0) {

return 1;

}

else if (map[n] > -1) {

return map[n];

}

else {

map[n] = countWaysDP(n - 1, map) + countWaysDP(n - 2, map)

countWaysDP(n - 3, map);

return map[n];

}

}

public static void main(String[] args) {

System.out.println(countWaysDP(5)); // 13

// 11111, 1112, 1121, 1211, 122, 131, 113, 23, 221, 2111, 212, 32, 311

}

}
 

http://www.lryc.cn/news/254173.html

相关文章:

  • 8.HTTP工作原理
  • 环境部署的学习笔记(Docker)
  • Navicat在分辨率不同的屏幕窗口显示大小不一致问题解决
  • 通过代码搞明白JAVA中值传递和引用传递
  • ambari 开启hdfs回收站机制
  • 服务器数据恢复—服务器重装系统导致逻辑卷发生改变的数据恢复案例
  • 软件工程之架构设计
  • oracle java.sql.SQLException: Invalid column type: 1111
  • Mac 浏览器下载的文件名总是「乱码」
  • Redis Reactor事件驱动模型源码
  • cv2.error: OpenCV(4.7.0)
  • 10.vue3项目(十):spu管理页面的sku的新增和修改
  • Java LeetCode篇-深入了解二叉树经典解法(三种方式实现:获取二叉树的最大深度)
  • Image Segmentation Using Deep Learning: A Survey
  • 可视化开源编辑器Swagger Editor本地部署并实现远程访问管理编辑文档
  • Java TCP协议实现一对一聊天与UDP协议实现群聊案例
  • 【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + Navicat + 数据库本地化 + 启动java项目
  • 人工智能_机器学习053_支持向量机SVM目标函数推导_SVM条件_公式推导过程---人工智能工作笔记0093
  • 二叉树的前、中和后序遍历的递归与迭代实现
  • 人体姿态估计算法
  • docker部署jupyter
  • 音视频的功耗优化
  • Python实现FA萤火虫优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战
  • SCAUoj综合性实验
  • 智加科技获全国首张重卡无人驾驶开放道路测试牌照
  • LLM大语言模型(一):ChatGLM3-6B本地部署
  • chatgpt prompt提示词
  • 【PyTorch】数据集
  • oops-framework框架 之 本地存储(五)
  • 编程常见的问题