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

JavaScriptのnumよりも小さい最大の長方形の合計


問題

最初の引数として数値の2次元配列を取り、2番目の引数としてターゲットの合計数を受け取るJavaScript関数を作成する必要があります。

関数は、配列内のすべての長方形の中で最大の合計を持つが、関数の2番目の引数で指定されたターゲットの合計以下である2次元配列からその長方形を見つける必要があります。

その後、関数は最終的にその最大の合計を返す必要があります。たとえば、関数への入力が-

の場合
const arr = [
   [1, 0, 1],
   [0, -2, 3]
];
const num = 2;

その場合、出力は-

になります。
const output = 2;

出力の説明:

最小の長方形は-

であるため
[
   [0, 1]
   [-2, 3]
]

このためのコードは-

になります
const arr = [
   [1, 0, 1],
   [0, -2, 3]
];
const num = 2;
const maxSum = (arr = [], num = 1) => {
   const rows = arr.length;
   const cols = arr[0].length;
   let maxSum = -Infinity;
   for(let l = 0; l < rows; l++) {
      const dp = Array(cols).fill(0);
      for(let r = l; r < rows; r++) {
         let sum = 0, max = -Infinity;
         for(let c = 0; c < cols; c++) {
            dp[c] += arr[r][c];
            if(sum < 0) sum = 0;
            sum += dp[c];
            max = Math.max(max, sum);
         }
         if(max <= num) maxSum = Math.max(max, maxSum);
         else {
            max = -Infinity;
            for(let c = 0; c < cols; c++) {
               sum = 0;
               for(let d = c; d < cols; d++) {
                  sum += dp[d];
                  if(sum <= num) max = Math.max(sum, max);
               }
            }
            maxSum = Math.max(max, maxSum);
         }
         if(maxSum === num) return num;
      }
   }
   return maxSum;
};
console.log(maxSum(arr, num));

出力

そして、コンソールの出力は-

になります
2

  1. 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

  2. C++でKで割り切れるN以下の最大数

    このチュートリアルでは、N以下で、kで割り切れる数を見つけるプログラムを作成します。 問題を解決するための手順を見てみましょう。 番号nとkを初期化します。 モジュロ演算子を使用して剰余を見つけます。 余りがゼロの場合は、nを返します。 それ以外の場合はn-剰余を返します。 例 コードを見てみましょう。 #include <bits/stdc++.h> using namespace std; int findLargerNumber(int n, int k) {    int remainder = n % k;    if (r