เราจำเป็นต้องเขียนฟังก์ชัน 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