Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 합이 동일한 n개의 하위 배열 찾기

<시간/>

정수 배열을 첫 번째 인수로, 정수를 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

함수는 모든 하위 배열이 동일한 합을 갖도록 원래 배열에서 n(두 번째 인수) 하위 배열을 만들 수 있는지 확인해야 합니다.

예:

입력이 -

인 경우
const arr = [4, 3, 2, 3, 5, 2, 1];
const num = 4;

하위 배열이 [5], [1, 4], [2, 3], [2, 3] 모두 합이 5이기 때문에 출력은 참이어야 합니다.

예시

다음은 코드입니다 -

const arr = [4, 3, 2, 3, 5, 2, 1];
const num = 4;
const canFormSubarray = (arr = [], num) => {
   const total = arr.reduce((sum, num) => sum + num, 0);

   if (total % num !== 0) {
      return false;
   }
   const target = total / num;
   const visited = new Array(arr.length).fill(false);
   const canPartition = (start, numberOfSubsets, currentSum) => {
      if (numberOfSubsets === 1) {
         return true;
      }
      if (currentSum === target) {
         return canPartition(0, numberOfSubsets - 1, 0);
      };
      for (let i = start; i < arr.length; i++) {
         if (!visited[i]) {
            visited[i] = true;
            if (canPartition(i + 1, numberOfSubsets, currentSum + arr[i])) {
               return true;
            }
            visited[i] = false;
         };
      };
      return false;
   };
   return canPartition(0, num, 0);
};
console.log(canFormSubarray(arr, num));

출력

다음은 콘솔 출력입니다 -

true