JavaScript 中最大和的子集


我们需要编写一个 JavaScript 函数,其中包含一个整数数组。我们的函数需要查找具有最大和的非相邻元素子集。

最后,该函数应计算并返回该子集的总和。

例如 -

如果输入数组为 -

const arr = [3, 5, 7, 8, 10];

则输出应为 20,因为数字的非相邻子集将为 3、7 和 10。

示例

此代码将是 -

const arr = [3, 5, 7, 8, 10];
const maxSubsetSum = (arr = []) => {
   let min = −Infinity
   const helper = (arr, ind) => {
      if ( ind < 0 ){
         return min
      };
      let inc = helper(arr, ind−2);
      let notInc = helper(arr, ind−1);
      inc = inc == min ? arr[ind] : Math.max(arr[ind], arr[ind] + inc);
      return Math.max( inc, notInc );
   };
   return helper(arr, arr.length − 1);
};
console.log(maxSubsetSum(arr));

输出

并且控制台中的输出将为 -

20

更新于: 24-11-2020

289 次浏览

开始你的 职业

通过完成课程获得认证

开始
广告
© . All rights reserved.