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

การแบ่งจำนวนเต็มเพื่อเพิ่มผลผลิตสูงสุดใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้ Integer, num เป็นอาร์กิวเมนต์แรกและตัวเดียวเท่านั้น

ฟังก์ชันของเราควรแบ่งจำนวนเต็มเหล่านี้ออกเป็นอย่างน้อยสองส่วน ซึ่งเมื่อเพิ่มเข้าไปจะให้ผลรวมของจำนวนเต็ม และเมื่อคูณจะได้ผลลัพธ์สูงสุด สุดท้าย ฟังก์ชันของเราควรส่งคืนผลิตภัณฑ์สูงสุดที่เป็นไปได้นี้

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

const num = 10;

จากนั้นผลลัพธ์ควรเป็น −

const output = 36;

คำอธิบายผลลัพธ์:

เพราะ 10 แบ่งเป็น 3 + 3 + 4 ได้ ซึ่งเมื่อคูณแล้วจะได้ 36

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const num = 10;
const breakInt = (num = 2) => {
   const dp = new Array(num + 1).fill(0);
   dp[0] = 0;
   dp[1] = 1;
   for(let i = 2; i <= num; i++){
      for(let j = 1; 2*j <= i; j++){
         dp[i] = Math.max(dp[i], Math.max(j, dp[j]) * Math.max(i-j,
         dp[i-j]) );
      };
   };
   return dp[num];
};
console.log(breakInt(num));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

36