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

C++ में मैट्रिक्स फ़्लिप करने के बाद स्कोर

मान लीजिए कि हमारे पास दो आयामी मैट्रिक्स ए है जहां प्रत्येक मान 0 या 1 है। यहां एक चाल में किसी भी पंक्ति या कॉलम को चुनना और उस पंक्ति या कॉलम में प्रत्येक मान को टॉगल करना शामिल है:सभी 0s से 1s, और सभी 1s से 0s को बदलना। अब कितनी भी चालें चलने के बाद, इस मैट्रिक्स की प्रत्येक पंक्ति को एक द्विआधारी संख्या के रूप में व्याख्यायित किया जाता है, और मैट्रिक्स का स्कोर इन संख्याओं का योग होता है। तो हमारा काम उच्चतम संभव स्कोर खोजना है। अगर इनपुट इस तरह है -

0 0 1 1
1 0 1 0
1 1 0 0

आउटपुट 39 होगा क्योंकि टॉगल करने के बाद मैट्रिक्स होगा -

1 1 1 1
1 0 0 1
1 1 1 1

तो संख्याएँ हैं 15 + 9 + 15 =39

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

  • n :=पंक्ति गणना और m :=स्तंभ गणना

  • रिट :=n x (2^(m - 1))

  • j के लिए 1 से m - 1 की सीमा में

    • सीएनटी:=0

    • मेरे लिए 0 से n - 1 की सीमा में

      • सीएनटी:=सीएनटी + ए [i, जे] =ए [i, 0]

    • अस्थायी:=2^(m - j - 1) * अधिकतम cnt और n - cnt

    • रिट :=रिट + टेम्प

  • वापसी रिट

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int matrixScore(vector<vector<int>>& A) {
      int n = A.size();
      int m = A[0].size();
      int ret = (1 << (m - 1)) * n;
      for(int j = 1; j < m; j++){
         int cnt = 0;
         for(int i = 0; i < n; i++){
            cnt += (A[i][j] == A[i][0]);
         }
         int temp = ((1 << (m - (j + 1))) * max(cnt, n - cnt));
         ret += temp;
      }
      return ret;
   }
};
main(){
   vector<vector<int>> v = {{0,0,1,1},{1,0,1,0},{1,1,0,0}};
   Solution ob;
   cout << (ob.matrixScore(v));
}

इनपुट

[[0,0,1,1],[1,0,1,0],[1,1,0,0]]

आउटपुट

39

  1. C++ में मैट्रिक्स की पंक्ति-वार बनाम स्तंभ-वार ट्रैवर्सल

    एक मैट्रिक्स को दो तरह से ट्रेस किया जा सकता है। रो-माइस ट्रैवर्सल पहली पंक्ति से शुरू होकर दूसरी और इसी तरह अंतिम पंक्ति तक एक-एक करके प्रत्येक पंक्ति का दौरा करता है। पंक्ति में तत्वों को सूचकांक 0 से अंतिम सूचकांक में लौटाया जाता है। कॉलम-वार ट्रैवर्सल में, तत्वों को पहले कॉलम से अंतिम कॉलम तक क

  1. C++ में T सेकंड के बाद मेंढक की स्थिति

    मान लीजिए कि हमारे पास एक अप्रत्यक्ष वृक्ष है जिसमें n शीर्ष हैं। शीर्षों की संख्या 1 से n तक है। अब एक मेंढक शीर्ष 1 से कूदना शुरू करता है। मेंढक एक सेकंड में अपने वर्तमान शीर्ष से दूसरे गैर-विजिट किए गए शीर्ष पर कूद सकता है यदि वे आसन्न हैं। मेंढक वापस देखे गए शीर्ष पर नहीं जा सकता। यदि मेंढक कई श

  1. सी ++ में एक बूलियन मैट्रिक्स प्रश्न?

    यहां हम एक दिलचस्प बूलियन मैट्रिक्स समस्या देखेंगे। एक बूलियन मैट्रिक्स दिया गया है जिसमें 0 और 1 है। हमारा लक्ष्य यह पता लगाना है कि 1 कहाँ अंकित है। यदि 1 को स्थिति mat[i,j] पर चिह्नित किया गया है, तो हम पंक्ति i और कॉलम j की 1 में सभी प्रविष्टियां करेंगे। आइए एक उदाहरण देखते हैं। यदि मैट्रिक्स नी