阅读背景:

[Codewars]-Pyramid Slide Down

来源:互联网 
[Codewars]-Pyramid Slide Down(2018/3/31更新) 题目: 从金字塔顶端到底部,寻找一条最长的路径。 思路: 动态规划就行了 这里我简单解释一下动态规划方法,从底部开始,把倒数第二层每个元素,分别加上下一层的相邻元素(可以选的下一步),,把最大的一个(最优的下一步)作为这层(倒数第二层)的新元素。 比如: 3 7 4 2 4 6 8 5 9 3 最底下的一层是8 5 9 3,倒数第二层是2 4 6 2可以选择下一层的8或者5作为下一步,而2+8>2+5,故把2+8=10,取代2, 4可以选择下一层的5和9作为下一步,而4+9>4+5,故把4+9=13,取代4的位置 同理6+9>6+3,倒数第二层变成了10 13 15,去掉(无视)最后一层,把倒数第二层最为新的最后一层。 金字塔变成 3 7 4 10 13 15 然后,金字塔变成 3 20 19 到最后只剩下一层,就是23,这个就是最优解了 解答: function longestSlideDown (pyramid) { var res = pyramid.pop() while (pyramid){ var cur = pyramid.pop() if(!cur){break ;return ;} var arr = [] cur.forEach(function(ele,index){ arr.push( cur[index]+Math.max( res[index],res[index+1] ) ) }) res = arr } return res.pop() } 大神写法: function longestSlideDown (pyramid) { return pyramid.reduceRight((last,current)=>current.map( (v,i)=>v+Math.max(last[i],last[i+1]) ))[0]; } 大神总是那么让人折服。 [Codewars]-Pyramid Slide Down(2018/3/31更新) 题目: 从金



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: