Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

เซ็ตย่อยที่มีผลรวมสูงสุดใน 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