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

JavaScriptのパーティションの平均の最大合計


問題

最初の引数として数値の配列arrを取り、2番目の引数として数値num(num <=arrのサイズ)を受け取るJavaScript関数を作成する必要があります。

この関数は、要素を残さないように、配列arrを最大でnum個の隣接する(空でない)グループに分割する必要があります。

このようなすべてのパーティションから、すべてのグループの平均の合計が最大になるパーティションを関数で選択する必要があります。

そして最後に、この最大の金額を返す必要があります。

たとえば、関数への入力が

入力

const arr = [10, 2, 3, 4, 10];
const num = 3;

出力

const output = 23;

出力の説明

なぜなら、このように配列を分割すると-

[10], [2, 3, 4], [10]

平均の合計は-

になります
10 + (9)/3 + 10 = 23

これは、すべてのパーティションの中で最大です。

以下はコードです-

const arr = [10, 2, 3, 4, 10];
const num = 3;
const greatestSum = (arr, num) => {
   const sum = (arr = []) => arr.reduce((acc, num) => acc + num, 0)
   let matrix = new Array(num + 1).fill(0).map(() => new Array(arr.length + 1).fill(0))
   for (let index = arr.length; index >= 0; index--) {
      const current = new Array(num + 1).fill(0).map(() => new Array(arr.length +    1).fill(0))
      for (let currentK = num; currentK >= 0; currentK--) {
         for (let count = arr.length - 1; count >= 0; count--) {

            if (index === arr.length && currentK === num) {
               current[currentK][count] = 0
            } else if (index < arr.length && currentK < num) {
               current[currentK][count] = Math.max(
               matrix[currentK][count + 1],matrix[currentK + 1][0] + sum(arr.slice(index - count, index + 1)) / (count + 1) )
            } else {
               current[currentK][count] = -Infinity
            }
         }
      }
      matrix = current
   }
   return matrix[0][0]
}
console.log(greatestSum(arr, num));

出力

23

  1. JavaScriptを使用して目標平均に到達するための残りの数の合計を見つける

    問題 数値の配列と単一の数値を受け取るJavaScript関数を作成する必要があります。 この関数は、平均が2番目の引数で指定された数と等しくなるように、配列にプッシュする必要のある数を見つける必要があります。 例 以下はコードです- const arr = [4, 20, 25, 17, 9, 11, 15]; const target = 25; function findNumber(arr, target) {    let sum = arr.reduce((a, b) => a + b, 0);    let avg = sum

  2. JavaScriptで可能な最大ペア合計を達成する

    問題 最初で唯一の引数として長さ2nの整数の配列arrを受け取るJavaScript関数を作成する必要があります。 この関数のタスクは、これらの整数をn組の整数にグループ化することです。たとえば、(a1、b1)、(a2、b2)、...、(an、bn)は、すべてのmin(ai、bi)の合計になります。 iは1からnまで可能な限り大きくします。 たとえば、関数への入力が-の場合 const arr = [1, 4, 3, 2]; その場合、出力は-になります。 const output = 4; 出力の説明 nは2で、ペアの最大合計は4 =min(1、2)+ min(3、4)です。 例