Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में अधिकतम संख्या

मान लीजिए कि हमारे पास आयाम w x h के साथ एक मैट्रिक्स M है, जैसे कि प्रत्येक सेल का मान 0 या 1 है, और आकार l x l के M के किसी भी वर्ग उप-मैट्रिक्स में अधिकतम अधिकतम संख्या है। हमें मैट्रिक्स M में अधिकतम संभव संख्या ज्ञात करनी होगी।

इसलिए, यदि इनपुट w =3, h =3, l =2, maxOnes =1 जैसा है, तो आउटपुट 4 होगा जैसा कि 3*3 मैट्रिक्स में होता है, 2*2 सब-मैट्रिक्स में 1 से अधिक नहीं हो सकते हैं . सबसे अच्छा समाधान जिसमें 4 हैं -

1 0 1
0 0 0
1 0 1

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • रिट:=0

  • n x n आकार का एक 2D सरणी वर्ग बनाएं

  • इनिशियलाइज़ करने के लिए मैं :=0, जब मैं <ऊंचाई, अपडेट (i 1 से बढ़ाएँ), करें -

    • j :=0 को इनिशियलाइज़ करने के लिए, जब j <चौड़ाई, अपडेट (j को 1 से बढ़ाएँ), करें -

      • sq[i mod n, j mod n] को 1 से बढ़ाएं

  • सरणी को परिभाषित करें v

  • इनिशियलाइज़ i :=0 के लिए, जब i

    • इनिशियलाइज़ j :=0 के लिए, जब j

      • v के अंत में sq[i, j] डालें

  • सरणी v को उल्टे क्रम में क्रमबद्ध करें

  • इनिशियलाइज़ करने के लिए i :=0, j :=0, जब i <का आकार v और j

  • वापसी रिट

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int maximumNumberOfOnes(int width, int height, int n, int maxOnes) {
      int ret = 0;
      vector < vector <int> > sq(n, vector <int>(n));
      for(int i = 0; i < height; i++){
         for(int j = 0; j < width; j++){
            sq[i % n][j % n]++;
         }
      }
      vector <int> v;
      for(int i = 0; i < n; i++){
         for(int j = 0; j < n ; j++){
            v.push_back(sq[i][j]);
         }
      }
      sort(v.rbegin(), v.rend());
      for(int i = 0, j = 0; i < v.size() && j < maxOnes; i++, j++){
         ret += v[i];
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.maximumNumberOfOnes(3,3,2,1));
}

इनपुट

3, 3, 2, 1

आउटपुट

4

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. C++ में द्विदलीय ग्राफ में किनारों की अधिकतम संख्या

    समस्या कथन एक पूर्णांक N दिया गया है जो शीर्षों की संख्या का प्रतिनिधित्व करता है। कार्य N शीर्षों के द्विदलीय ग्राफ़ में किनारों की अधिकतम संभव संख्या ज्ञात करना है। द्विपक्षीय ग्राफ़ द्विपक्षीय ग्राफ वह होता है जिसमें शीर्षों के 2 सेट होते हैं। सेट ऐसे होते हैं कि एक ही सेट के कोने कभी भी उनके ब