zoukankan      html  css  js  c++  java
  • 二维数组实现01背包

    <script>
    var proDuctNum = 5;
    var MaxCapicity = 15;
    var ValueArr = [4, 5, 10, 11, 13];
    var Capicity = [3, 4, 7, 8, 9];

    function Package_Value(Num, MaxCapicity, ValueArr, CaArr) {
               var result = [];
               for(var i = 0; i < Num + 1; i++) {
                    result.push([]);
               }
             for (var i=0;i<Num+1;i++) {
                  for (var j=0;j<MaxCapicity;j++) {
                result[i][j]=0;
              }
              }
               for (var i=1;i<Num;i++) {
                    //索引值的区分在此时异常重要
                   //从一开始是因为在循环放入第一件的时候将出现空指针-》undefined
                  //01背包的动态规划的核心就是由上一次的结果来决定下一次的结果,每个物品的容量
                 //当可以j的大小可以装下第i(索引值!!)物品时,就出现了两种情况
                 //第一种:在装了第i件物品的剩余容量中装i-1件物品,如果装了 之后大于之前i-1件物品的价值,就装
                 //第二种:如果装了之后本身价值并没有增加,就不装,恢复到之前i-1件物品的价值
                     for(var j=1;j<MaxCapicity;j++){
                               if (CaArr[i-1]<=j) {
                                  //物品时i件,但是此时的容量值是CaArr[i-1];
                             if (result[i-1][j]<(result[i-1][j-CaArr[i-1]]+ValueArr[i-1])) {
                                          //resuit[n][m],指的是装第n件物品,且容量是m的时候
                                         result[i][j]=result[i-1][j-CaArr[i-1]]+ValueArr[i-1];
                                         //第i件物品,但是第i件物品的Value是ValueArr[i-1];
                            } else{
                                result[i][j]=result[i-1][j];
                          }
                 } else{
                          result[i][j]=result[i-1][j];
                 } 
              }
     }

           return result;
    }
    function Func_sort(arr){
     var Max=0;
     var temp=0;
     for (var i=0;i<arr.length;i++) {
     temp=arr[i].sort(function(num1,num2){
                return num1-num2;
    })
     temp=arr[i][arr[i].length-1];
     if (temp>Max) {
             Max=temp;
     }
     }
         return Max;
    }
    console.log("最大的结果是"+Func_sort(Package_Value(proDuctNum, MaxCapicity, ValueArr, Capicity)))
    </script>

  • 相关阅读:
    PHP 快递单号查询api接口源码指导
    电商平台适用基础快递查询api接口对接demo解决方案
    智能物流查询api接口demo(php示例)
    解决在TP5中无法使用快递鸟查询API接口方案
    解析快递鸟在线预约取件API接口对接编码
    快递鸟批量打印电子面单接口及控件安装
    「note」原根照抄
    「atcoder
    Solution -「NOI 2021」轻重边
    Solution Set -「ARC 124」
  • 原文地址:https://www.cnblogs.com/laiso/p/8597658.html
Copyright © 2011-2022 走看看