继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

js-动态规划解决背包问题

甜酒0917
关注TA
已关注
手记 13
粉丝 2
获赞 23
var ary=[{weight:35,value:10},{weight:30,value:40},{weight:6,value:30},{weight:50,value:50},{weight:40,value:35},{weight:10,value:40},{weight:25,value:30}]

var testA=function(M,ary){
//建立备忘录
    var result;
    for(var i=0;i<=M;i++){
        result=result||[];
        for(var j=0;j<=ary.length;j++){
        result[i]=result[i]||[];
            result[i][j]=-1;
         }
    }
    console.log(result)
    var test=function(M,ary){
        if(result[M][ary.length]==-1){
         var  temp;
         var  data; 
        if(ary.length>0){
        temp=ary.shift();
          if(M>=temp.weight){
           data= Math.max(temp.value+test(M-temp.weight,ary),test(M,ary));
          }else{
           data=  Math.max(test(M,ary));
          }
        }else{
           data=  0; 
       }    
//写入备忘录
            result[M][ary.length]=data;
            return data;
    }else{
//备忘录取值
        return result[M][ary.length];
    }
  }
    return test(M,ary);
}

    alert(testA(150,ary))
打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP