0


小明爬楼梯--python

  1. '''
  2. 题目:一共有15台阶,小明每次可以爬一节,或者两节,或者三阶。
  3. 思路:
  4. 第一种
  5. 如果把她用数学语言符号化1阶台阶分解成1,意味着只有一种方法;2可以分解成2和1 1意味着二阶台阶有两种算法。3可以分解成 0 3,2 1,1 2 ,111
  6. 四种上法。用字典表达式{1:1,2:2,3:4}
  7. 思想是不管你上多少台阶都是由123台阶上法组合而来的。
  8. 考虑一下如何到达第4层楼梯
  9. 4可以分解成0 4,3 1 ,1 3 ,2 2,2 1 1,1 2 1,1 1 2 ,1 1 1 1分解成8种而只能用1 2 3 组合所以7种
  10. 5可以分解成16种,因为只能用1 2 3 组合所以13种
  11. 6可以分解为32种,因为只能用1 2 3 组合所以24种
  12. 删除元素的规律我没有找到,换下面的思路进行写题
  13. 第二种思路:
  14. 如何到达5台阶呢?
  15. 从4台阶上一个
  16. 从3台阶上两个
  17. 从2台阶上三个
  18. 只有以上这三种情况,三种情况相加就是就是达到5台阶的总算法
  19. 设到达4台阶有x种方法,到达3台阶有y种方法,到达2台阶有z种方法
  20. 所以到达5台阶就是x+y+z转成函数就是下列函数表达式
  21. f(n)=f(n-1)+f(n-2)+f(n-3) n>=4
  22. '''
  23. def climbStairs1(n):
  24. #递推法
  25. a=1
  26. b=2
  27. c=4
  28. for i in range(n-3):
  29. c,b,a=a+b+c,c,b
  30. return c
  31. print(climbStairs1(15))
  32. 上面用的是斐波那契数列算法
  33. 下面是递归算法
  34. def climbStairs2(n):
  35. first={1:1,2:2,3:4}
  36. if n in first.keys():
  37. return first[n]
  38. else:
  39. return climbStairs2(n-1)+climbStairs2(n-2)+climbStairs2(n-3)
  40. print(climbStairs2(15))
  41. '''
  42. 如果最多爬四阶台阶,原理是一样的
  43. 怎么到达15台阶?
  44. 14上一层
  45. 13上二层
  46. 12上三层
  47. 11上四层
  48. f(n)=f(n-1)+f(n-2)+f(n-3)+f(n-4)
  49. '''
  50. def climbStairs3(n):
  51. first={1:1,2:2,3:4,4:8}
  52. if n in first.keys():
  53. return first[n]
  54. else:
  55. return climbStairs3(n-1)+climbStairs3(n-2)+climbStairs3(n-3)+climbStairs3(n-4)
  56. print(climbStairs3(15))

那个数学语言算法是我第一种想到的解法,奈何没有找到删除规律,只能搁浅。希望大家可以给我提下见解,谢谢你们在我修炼python路上提供的帮助。

标签: python 算法

本文转载自: https://blog.csdn.net/m0_59882269/article/details/120854788
版权归原作者 右耳要加油 所有, 如有侵权,请联系我们删除。

“小明爬楼梯--python”的评论:

还没有评论