Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptを使用した組み合わせ合計の問題


候補番号のセット(重複なし)とターゲット番号(ターゲット)が与えられたとします。

候補数の合計がターゲットになる候補内のすべての一意の組み合わせを検索する関数を作成する必要があります。

同じ繰り返し数を候補者から無制限に選択できます。

  • すべての数値(ターゲットを含む)は正の整数になります。

  • ソリューションセットに重複する組み合わせを含めることはできません。

入力が-

の場合
candidates = [2,3,6,7], target = 7,

これに対する解決策は次のようになります-

[
   [7],
   [2,2,3]
];

問題は、最良の結果や結果の数ではなく、すべての可能な結果を​​取得することであるため、動的計画法を考慮する必要はありません。それを処理するには、再帰を使用したバックトラックアプローチが必要です。

以下はコードです-

const recursiveSum = (
   candidates,
   remainingSum,
   finalCombinations = [],
   currentCombination = [],
   startFrom = 0,
) => {
   if (remainingSum < 0) {
      return finalCombinations;
   }
   if (remainingSum === 0) {
      finalCombinations.push(currentCombination.slice());
      return finalCombinations;
   }
   for (let candidateIndex = startFrom; candidateIndex < candidates.length; candidateIndex += 1) {
      const currentCandidate = candidates[candidateIndex];
      currentCombination.push(currentCandidate);
      recursiveSum(
         candidates,
         remainingSum - currentCandidate,
         finalCombinations,
         currentCombination,
         candidateIndex,
      );
      currentCombination.pop();
   }
   return finalCombinations;
}
const combinationSum = (candidates, target) => recursiveSum(candidates, target);
console.log(combinationSum([2, 3, 6, 7], 7));

出力

以下はコンソールでの出力です-

[ [ 2, 2, 3 ], [ 7 ] ]

  1. JavaScriptを使用した配列内のネストされたオブジェクト値の合計

    以下は、JavaScriptを使用して配列内のネストされたオブジェクト値を合計するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <st

  2. JavaScriptを使用した長方形内のすべての正方形の周囲長の合計

    問題 このような長方形の中に5つの正方形が埋め込まれていると仮定します- それらの周囲長は-になります 4 + 4 + 8 + 12 + 20 = 48 units 数値nを取り、n個の正方形が埋め込まれている場合は、周囲の合計を返すJavaScript関数を作成する必要があります。 例 以下はコードです- const num = 6; const findPerimeter = (num = 1) => {    const arr = [1,1];    let n = 0;    let sum = 2; &n