Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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. जावास्क्रिप्ट का उपयोग करके एक आयत में सभी वर्गों की परिधि का योग

    समस्या मान लीजिए कि इस तरह एक आयत के अंदर 5 वर्ग एम्बेडेड हैं - उनका परिमाप होगा - 4 + 4 + 8 + 12 + 20 = 48 units हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक संख्या n लेता है और यदि n वर्ग एम्बेडेड हैं तो परिधि का योग वापस कर दें। उदाहरण निम्नलिखित कोड है - const num = 6; const findPerimeter =

  1. जावास्क्रिप्ट में मोनोटोन अंकों के साथ बस छोटी संख्या

    एकात्मक रूप से बढ़ते हुए अंक एक पूर्णांक में मोनोटोन बढ़ते अंक होते हैं यदि और केवल यदि आसन्न अंकों की प्रत्येक जोड़ी x और y x <=y को संतुष्ट करते हैं। समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो पहले और एकमात्र तर्क के रूप में एक संख्या, संख्या लेता है। हमारे फ़ंक्शन को केवल सबसे बड़

  1. C++ में K से विभाज्य N से छोटी या उसके बराबर सबसे बड़ी संख्या

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो N से छोटी या उसके बराबर और k से विभाज्य संख्या ज्ञात करता है। आइए समस्या को हल करने के लिए चरणों को देखें। संख्या n और k को प्रारंभ करें। मोडुलो ऑपरेटर के साथ शेष खोजें। यदि शेष शून्य है, तो n लौटाएं। अन्यथा वापसी n - शेष। उदाहरण आइए कोड देख