该文转载,因所看文章没有放原文链接,故找不到原文链接

题目分析

问题本质:斐波那契数列

令跳法为f(n),

如果n=1:{{1}},f(1)=1

如果n=2:{{1,1},{2}},f(2)=2

如果n=3,{{1,1,1},{1,2},{2,1}},f(3)=3

如果n=6,有两种情况:1)目前在5阶,跳1步到6;2)目前在4阶,跳2步到6。即f(6)=f(5)+f(4)

... ...

如果有n阶(n>2),1)目前在n-1阶,跳1步到n;2)目前在n-2阶,跳2步到n。即f(n)=f(n-1)+f(n-2)

实现

实现算法往往是简单的,及时是复杂算法也花费不了太多精力,所以将问题转换为数学问题是一种很好的选择。当前这种简单算法实现方式更为简单,而且往往不止一种方式。

递归

public static int f(int n){if(n<=2) return n;int x = f(n-1)+f(n-2);return x;
}

优点:可能是最好理解的算法了把。代码简单,好理解。
缺点:计算次数颇多,有很多冗余计算。

迭代

public static int f(int n){if(n<=2) return n;if first=1,second=2;int third=0;for(int i=3;i<=n;i++){third = first+second;first = second;second = third;}return third;
}

优点: 基本没有冗余计算,效率高
缺点: 谁能一次读完就理解的?

动态规划

原文:动态规划是解决下面这些性质类问题的技术:
1. 一个问题可以通过更小子问题的解决方法来解决(译者注:即问题的最优解 包含了其子问题的最优解,也就是最优子结构性质)。
2. 有些子问题的解可能需要计算多次(译者注:也就是子问题重叠性质)。
3. 子问题的解存储在一张表格里,这样每个子问题只用计算一次。
4. 需要额外的空间以节省时间。

public static int[] A = new int[100];
public static int f(int n){if(n<=2){A[n] = n;}if(A[n]>0){return A[n];} else {A[n] = f(n-1)+f(n-2);return A[n];}
}

虽然没弄懂为啥叫动态规划,但是代码还是很清晰的。
优点:已经计算过的结果就不需要再次计算了。空间换时间
缺点:需要额外的开销。

问题:

例:公司招20名员工,每天招1个或者2个,问有多少种招法?

动态规划 - N步台阶问题相关推荐

  1. 算法! 有n步台阶,一次只能上1步或2步,共有多少种走法

    有2种算法, 递归和循环迭代, 依次介绍并比较 1.递归 1步台阶, 一种走法, 即f(1)=1; 2步台阶, 2种走法, 一步加一步或是直接跨两步, 即f(2)=2 3步台阶, 最后一次要么跨1步, ...

  2. 编程题-有n步台阶一次只能上1步或2步共有多少种走法

    问题: 有n步台阶,一次只能上1步或2步,请共有多少种走法,请使用编程实现. 编程题实现: 方法1-递归 //实现f(n):求n步台阶,一共有几种走法public int f(int n){if(n& ...

  3. 台阶的意思_正屋大门前几步台阶好 二步台阶进屋的含义 三步台阶进屋的含义...

    在古时候,人们在建的房子门口都会设立台阶,不仅能够防止外面的尘土吹进屋内,而且也有步步高升的美好寓意,但是台阶的步数也是很有讲究的,那么正屋大门前几步台阶好?下面为大家介绍二步台阶进屋的含义,以及三步 ...

  4. 【有n步台阶,一次只能上1步或2步,共有多少种走法?】

    1.递归 public static int f(int n){if (n < 1){throw new IllegalArgumentException(n + "不能小于1&quo ...

  5. 有N步台阶,每次可以走1步或者2步,计算有多少种走法

    假如台阶为1 有一种走法 f(1)=1 假如台阶有2 有1+1,2 这两种走法 1步+1步 =2种 f(2)=2 假如台阶有3 有1+1+1 ,1+2 ,2+1 这三种走法 就是f(3)= f(1) ...

  6. 动态规划-青蛙跳台阶

    一只青蛙,一次只能跳一级台阶,或者跳两级台阶. 问:这只青蛙跳上n级台阶有多少种跳法. 跳法非常多: 一级一级跳,一级两级跳,两级一级,两级两级的跳-普通逻辑弄不明白. 动态规划思想: 如果这只青蛙, ...

  7. 有n步台阶,一次只能上1步或2步,共有多少种走法?

    根据分析这就是 --> 斐波那契数列 1 2 3 5 8 13 - 1.递归 public int x(int n) {if(n==1 || n==2) {return n;}return x( ...

  8. Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?

    Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...

  9. python爬楼梯多少种_Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?...

    Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...

最新文章

  1. 探索初级算法学习笔记-快速排序法
  2. 飘逸的python - hack输出流便于调试
  3. 程序员会写诗是怎样的体验
  4. curl and wget
  5. java成神之——集合框架之ArrayList,Lists,Sets
  6. vb.net 教程 3-8 窗体编程 容器 3 SplitContainer
  7. 四 树莓派系统配置及进入图形桌面
  8. mac 远程连接 Windows 桌面
  9. Systick中断延时
  10. #ifndef的详细意思
  11. 无死角窥探的焦虑:AI如何反击隐私侵占?
  12. Python中文gbk编码输出报错
  13. 美图手机sim卡显示无服务器,美图手机卡顿怎么解决
  14. 原来,“空三加密”竟是加了这些“密”!
  15. 展锐5G芯片强势崛起,为千行百业实现智慧化转型
  16. 傻瓜式Ubuntu20.04显卡驱动安装
  17. 你想告诉准程序员些什么?
  18. 使用LitePal操作数据库
  19. C语言小练习-酒店预订
  20. 2022天梯赛正式赛(附天梯赛题目链接)

热门文章

  1. 实时数仓到底是什么呢?与传统数仓有什么区别?
  2. Field ‘gmt_create‘ doesn‘t have a default value; nested exception is java.sql.SQLException: Field ‘g
  3. 关于wifi portal认证--为浏览器添加wifi认证功能
  4. 变量值互换自定义函数swap()的使用
  5. VS解决BEX错误但无法关闭DEP保护的问题
  6. mysql之sql语句优化
  7. 俄勒冈大学计算机科学专业,2020年俄勒冈大学排名TFE Times美国最佳计算机科学硕士专业排名第68...
  8. 年轻代、年老代和持久代
  9. 《MySQL安装流程详解》及《MySQL安装一直失败,重新安装显示已安装》
  10. 2020研究生数学建模E题--AlexNet深度网络解法(大雾能见度估计与预测)(含代码)