zoukankan      html  css  js  c++  java
  • 动态规划(斐波那契 JS实现)

    日常刷题时遇到如下一个问题,感觉很不做值得做一下并记录(原案例作者使用C++实现这里本人使用JS实现);

    题目信息:

    解法:

       //动态规划问题解决(斐波那契数)
      
    var datas=[ [12], [31,8], [8,19,0], [2,67,4,40], [44,5,27,6,5] ]; console.log('数据: ',datas); var n=5; var sum=0; //i:水平;j:竖直 function maxVal(i,j){ if(i==4) return datas[i][j]; let x=maxVal(i+1,j); let y=maxVal(i+1,j+1); return Math.max(x,y)+datas[i][j]; } var res= maxVal(0,0); console.log('最大值:',res);

    思考:动态规划的思想就是分治,通过把一个大问题分解成一小块一小块的,而这里的每一小块通常都是具有重叠的操作;就拿本例来分析通过二维数组的形式来存储斐波那契

       数,根据二维数组的特点可得到以下信息:

    • n 行数据时,n 与 i 是对应的(可以用于终止条件);
    • 从上往下看,节点为 (x,y)时,左子树位置为(x+1, y);右子树的位置为(x+1, y+1);
    • 重复操作的就是本节点的数据加上左子树,右子树的数据进行大小比较;

      因此又根据以上得到的信息,很简单的解决了这个问题;

    版权声明:本文为博主原创文章,如需转载,请标明出处。

  • 相关阅读:
    iOS-汽车品牌app
    iOS-英雄联盟人物展示
    工作与梦想中的工作:给计算机专业学生的建议
    c++ 宏的使用
    c++ 预处理的应用
    iOS-UItableView 多组表格
    ios-代理模式 协议小结
    c++有符号变量和无符号变量相加的结果
    ios-图片轮播器
    ios-倒计时
  • 原文地址:https://www.cnblogs.com/gamecc666/p/14574551.html
Copyright © 2011-2022 走看看