题解 | #爬楼梯#Erlang动态规划拆分情况

爬楼梯

http://www.nowcoder.com/questionTerminal/d679cfa563974385a3bef8cd854c73db

解题思路

因为每次只能爬1或2个台阶, 从1个2个台阶开始推断, 并将问题n阶台阶拆解为求解到达n-1阶台阶以及n-2阶台阶的总和, 过程中缓存已记录阶数对应的数据

代码

-spec climb_stairs(N :: integer()) -> integer().
climb_stairs(N) when N =< 2 ->
    N;
climb_stairs(N) ->
    do_climb_stairs(3, #{stairs => N, 1 => 1, 2 => 2}).

do_climb_stairs(N, Args = #{stairs := Stairs}) when N < Stairs ->
    Sum = maps:get(N - 1, Args) + maps:get(N - 2, Args),
    do_climb_stairs(N + 1, Args#{N => Sum});
do_climb_stairs(N, Args) ->
    maps:get(N - 1, Args) + maps:get(N - 2, Args).
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 20:15
还能挽救吗?找同学帮忙看了一下&nbsp;字节怎么能如此对我
牛客26396789...:你这是严重红线,被发现你自己永远进不去,你那个同学直接走人,你还敢宣扬
点赞 评论 收藏
分享
牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务