Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में कॉलम स्वैपिंग की अनुमति के साथ 1 का सबसे बड़ा आयत खोजें


मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है, हमें उस दिए गए मैट्रिक्स में सभी 1 का सबसे बड़ा आयत ढूंढना है। आयत को उस मैट्रिक्स के कॉलम के किसी भी जोड़े को स्वैप या एक्सचेंज करके बनाया जा सकता है।

तो, यदि इनपुट इस तरह है:

10010
10011
11010

तो आउटपुट इस मामले में 6 होगा। आयत कॉलम 1 को 3 के साथ एक्सचेंज करके बनाया जा सकता है। एक्सचेंज के बाद मैट्रिक्स होगा:

00110
00111
10110

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • row := mat का आकार

  • col := mat[0] का आकार

  • temp := (row+1) x (col+1) क्रम का एक मैट्रिक्स, और 0 से भरा हुआ

  • i को 0 से col तक के लिए, करें:

    • temp[0, i] := mat[0, i]

    • j को 1 से row तक के लिए, करें:

      • यदि mat[j, i], 0 के समान है, तो:

        • temp[j, i] := 0

      • अन्यथा,

        • temp[j, i] := temp[j-1, i] + 1

  • i को 0 से row तक के लिए, करें:

    • cnt := आकार (row+1) का एक ऐरे, और 0 से भरा हुआ

    • j को 0 से col तक, 1 से बढ़ाकर, करें:

      • cnt[temp[i, j]] := cnt[temp[i, j]] + 1

    • col_no := 0

    • j := row

    • जब j >= 0, करें:

      • यदि cnt[j] > 0, तो:

        • k को 0 से cnt[j] तक के लिए, करें:

          • temp[i, col_no] := j

          • col_no := col_no + 1

      • j := j - 1

  • area_maximum := 0

  • i को 0 से row तक के लिए, करें:

    • j को 0 से col तक के लिए, करें:

      • area_current := (j+1) * temp[i, j]

      • यदि area_current > area_maximum, तो:

        • area_maximum := area_current

  • area_maximum लौटाएं

उदाहरण

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

def maxArea(mat):    row = len(mat)    col = len(mat[0])    temp = [[0 for i in range(col + 1)] for i in range(row + 1)]    for i in range(0, col):       temp[0][i] = mat[0][i]    for j in range(1, row):       if ((mat[j][i] == 0)):          temp[j][i] = 0       else:          temp[j][i] = temp[j - 1][i] + 1    for i in range(0, row):       cnt = [0 for i in range(row + 1)]       for j in range(0, col, 1):          cnt[temp[i][j]] += 1       col_no = 0       j = row       while(j >= 0):          if (cnt[j] > 0):             for k in range(0, cnt[j]):                temp[i][col_no] = j                col_no += 1          j -= 1    area_maximum = 0    for i in range(0, row):       for j in range(0, col):          area_current = (j + 1) * temp[i][j]          if (area_current > area_maximum):             area_maximum = area_current    return area_maximum mat = [    [0, 0, 1, 1, 0],    [0, 0, 1, 1, 1],    [1, 0, 1, 1, 0]] print("Area : ",maxArea(mat))

इनपुट

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

आउटपुट

Area : 2

  1. पायथन में दिए गए बाइनरी ट्री में सबसे बड़ा परफेक्ट सबट्री खोजें पायथन में दिए गए बाइनरी ट्री में सबसे बड़ा परफेक्ट सबट्री खोजें

    मान लीजिए हमारे पास एक दिया गया बाइनरी ट्री है; हमें उस दिए गए बाइनरी ट्री में सबसे बड़े परफेक्ट सब-ट्री का आकार ढूंढना है। जैसा कि हम जानते हैं, परफेक्ट बाइनरी ट्री एक बाइनरी ट्री है जिसमें सभी आंतरिक नोड्स के दो बच्चे होते हैं और सभी पत्ते समान स्तर पर होते हैं।तो, यदि इनपुट इस तरह है:तो आउटपुट 3

  1. Python में हिस्टोग्राम में सबसे बड़ा आयत Python में हिस्टोग्राम में सबसे बड़ा आयत

    मान लीजिए हमारे पास एक पूर्णांक सरणी है जो हिस्टोग्राम की ऊंचाई दर्शाती है। प्रत्येक बार की इकाई चौड़ाई है। हमें निम्नानुसार सबसे बड़े क्षेत्र का आयत ढूंढना है −इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −स्टैक बनाएं, i := 0, ans := 0 सेट करेंजब तक i < heights का आकार, तबयदि स्टैक में 0 तत्व हैं

  1. Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक ऐरे दिया गया है, हमें ऐरे के सबसे बड़े तत्व की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का उपयोग करते हैं जिसमें हम पूरे लूप को पार करके और तत्व प्राप्त करके सबसे बड़ा तत्व निकालते हैं। हम नीच