美文网首页
动态规划js

动态规划js

作者: aaagu1234 | 来源:发表于2021-08-09 18:52 被阅读0次

    求最大的输出和。从上到下累加和,只能往下或者下右( 比如: 7->3->8->7->5 这个就是最大值30)
    7
    3 8
    8 1 0
    2 7 4 4
    4 5 2 6 5

    <script> 
    //初始化二维数组,简单一点。
    var arr = [];
    arr[0] =[];
    arr[0][0] = 7;
    arr[1] =[];
    arr[1][0] = 3;arr[1][1] = 8; 
    arr[2] =[];
    arr[2][0] = 8;arr[2][1] = 1; arr[2][2] = 0;
    arr[3] =[];
    arr[3][0] = 2; arr[3][1] = 7; arr[3][2] = 4; arr[3][3] = 4;   
    arr[4] =[];
    arr[4][0] = 4; arr[4][1] = 5; arr[4][2] = 2; arr[4][3] = 6;  arr[4][4] = 5;
    var n = 5;
    var maxSum = arr[n-1];
    //1. 减2是因为要从倒数第二行开始
    for(var i = n-2; i >= 0; i--){
      for(var j = 0; j <= i; j++){
        maxSum[j] = Math.max(maxSum[j], maxSum[j+1]) + arr[i][j]
      }
    }
    alert(maxSum[0])
    // 2. 递归实现的
    //   var n = 5;
    // function maxsum(i,j){
     
    //    if(i == n-1){
    //      return arr[i][j];
    //    }
    //    var x = maxsum(i+1,j);
    //    var y = maxsum(i+1,j+1);
     
    //    console.log(x,y,arr[i][j]);
    //    return Math.max(x, y) + arr[i][j];
    // }
    // var aa = maxsum(0,0)
    // alert(aa)
    </script>
    

    第一种递推的算法,就是倒着两个依次累加更换掉倒数第二层,同理依次类推到arr[0][0] 就是累加出来的最大值。但是原来的arr数组已经改变了。
    参考: https://blog.csdn.net/ailaojie/article/details/83014821

    相关文章

      网友评论

          本文标题:动态规划js

          本文链接:https://www.haomeiwen.com/subject/wjttbltx.html