Computer >> Máy Tính >  >> Lập trình >> Javascript

Ngắt số nguyên để tối đa hóa sản phẩm trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy Số nguyên, num, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta nên chia các số nguyên này thành ít nhất hai phần mà khi được thêm vào sẽ cho tổng số nguyên là num và khi nhân lên sẽ cho tích lớn nhất có thể. Cuối cùng, chức năng của chúng tôi sẽ trả về sản phẩm tối đa có thể này.

Ví dụ:nếu đầu vào của hàm là -

const num = 10;

Sau đó, đầu ra phải là -

const output = 36;

Giải thích đầu ra:

Bởi vì 10 có thể được chia thành 3 + 3 + 4 mà khi nhân lên sẽ cho 36.

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

36