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

JavaScriptで整数分割のすべての可能な方法を見つける


正の整数nの分割は、正の整数の合計としてnを書き込む方法です。被加数の順序のみが異なる2つの合計は、同じパーティションと見なされます。

たとえば、4は5つの異なる方法で分割できます-

4
3 + 1
2 + 2
2 + 1 + 1
1 + 1 + 1 + 1

引数として正の整数をとるJavaScript関数を作成する必要があります。関数は、その整数を分割するためのすべての可能な方法を見つけて返す必要があります。

以下はコードです-

const findPartitions = (num = 1) => {
   const arr = Array(num + 1).fill(null).map(() => {
      return Array(num + 1).fill(null);
   });
   for (let j = 1; j <= num; j += 1) {
      arr[0][j] = 0;
   }
   for (let i = 0; i <= num; i += 1) {
      arr[i][0] = 1;
   }
   for (let i = 1; i <= num; i += 1) {
      for (let j = 1; j <= num; j += 1) {
         if (i > j) {
            arr[i][j] = arr[i - 1][j];
         }
         else {
            const exclusive = arr[i - 1][j];
            const inclusive = arr[i][j - i];
            arr[i][j] = exclusive + inclusive;
         }
      }
   }
   return arr[num][num];
};
console.log(findPartitions(4));

出力

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

5

  1. JavaScriptで配列内のすべてのピークとその位置を見つける

    ビルドアップ JavaScriptに次の配列があるとします- const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4]; この配列の点をy軸にプロットし、隣接する各点をx軸上で単位距離だけ離すと、グラフは次のようになります- このグラフは、この配列のインデックス3と7に、それぞれ値7と4の2つの極大値(ピーク)が存在することを明確に示しています。 問題 整数の配列arrを最初で唯一の引数として受け取るJavaScript関数を作成する必要があります。 この関数は、最大値と位置の2つのプロパティを含むオブジェクトを返すことになっています。

  2. 可能なすべての方法で整数の分割を実行するC++プログラム

    これは、パーティションを追加すると整数になるように、特定の整数のすべての一意のパーティションを取得するC++プログラムです。このプログラムでは、正の整数nが与えられ、nを正の整数の合計として表すためのすべての可能な一意の方法を生成します。 アルゴリズム Begin    function displayAllUniqueParts(int m):    Declare an array to store a partition p[m].    Set Index of last element k in a partition to