Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tạo hoán vị để đạt số mục tiêu, có thể tái sử dụng số cho trước trong JavaScript

Chúng ta cần viết hàm JavaScript nhận vào mảng số làm đối số đầu tiên và số mục tiêu tổng làm đối số thứ hai.

Hàm trả về mảng tất cả mảng con từ mảng gốc có tổng phần tử bằng mục tiêu. Có thể dùng một số nhiều lần để đạt tổng.

Ví dụ:

Nếu mảng và số đầu vào:

const arr = [1, 2, 4]; 
const sum = 4;

Kết quả:

const output = [ 
  [1, 1, 1, 1], 
  [1, 1, 2], 
  [2, 2], 
  [4] 
]

Ví dụ

const arr = [1, 2, 4]; 
const sum = 4; 
const getCombinations = (arr = [], sum) => { 
  const result = []; 
  const pushElement = (i, t) => { 
    const s = t.reduce(function (a, b) { 
      return a + b; 
    }, 0); 
    if (sum === s) { 
      result.push(t); 
      return; 
    }; 
    if (s > sum || i === arr.length) { 
      return; 
    }; 
    pushElement(i, t.concat([arr[i]])); 
    pushElement(i + 1, t); 
  } 
  pushElement(0, []); 
  return result; 
}; 
console.log(getCombinations(arr, sum));

Kết quả

Kết quả in ra console:

[ [ 1, 1, 1, 1 ], [ 1, 1, 2 ], [ 2, 2 ], [ 4 ] ]