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

पायथन का उपयोग करके सभी के साथ सबमैट्रिस गिनने का कार्यक्रम

मान लीजिए कि हमारे पास m x n बाइनरी मैट्रिक्स है, हमें यह पता लगाना है कि सभी सबमैट्रिस में कितने सबमैट्रिस हैं।

तो, अगर इनपुट पसंद है

1 0 1
0 1 1
0 1 1

तब आउटपुट 13 होगा क्योंकि 6 (1x1) मैट्रिक्स, 3 (2,1) मैट्रिक्स, 2 (1x2) मैट्रिक्स, 1 (3x1) मैट्रिक्स और 1 (4x4) मैट्रिक्स हैं।

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

  • मी :=मैट्रिक्स की पंक्ति गणना

  • n :=मैट्रिक्स की कॉलम संख्या

  • dp :=समान आकार का एक शून्य मैट्रिक्स m x n

  • मैं के लिए 0 से एम -1 की सीमा में, करो

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

      • अगर मैं 0 और मैट्रिक्स के समान है [i, j], तो

        • डीपी [आई, जे]:=1

      • अन्यथा जब मैट्रिक्स[i][j] गैर-शून्य है, तब

        • डीपी [आई, जे]:=डीपी [आई -1, जे] + 1

  • कुल:=0

  • मैं के लिए 0 से एम -1 की सीमा में, करो

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

      • j+1 से n की श्रेणी में k के लिए, करें

        • कुल:=कुल + न्यूनतम dp[i,j] से dp[i,k]

  • कुल वापसी

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

उदाहरण

def solve(matrix):
   m = len(matrix)
   n = len(matrix[0])
   dp = [[0] * n for _ in range(m)]
   for i in range(m):
      for j in range(n):
         if i == 0 and matrix[i][j]:
            dp[i][j] = 1
         elif matrix[i][j]:
            dp[i][j] = dp[i-1][j] + 1
   total = 0
   for i in range(m):
      for j in range(n):
         for k in range(j+1, n+1):
            total += min(dp[i][j:k])
   return total
matrix = [[1,0,1],[0,1,1],[0,1,1]]
print(solve(matrix))

इनपुट

[4,6,7,8], 11

आउटपुट

13

  1. पायथन में n नोड्स के साथ BST की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास अलग-अलग नोड हैं। सभी अलग हैं। हमें यह पता लगाना है कि हम उन्हें कितने तरीकों से व्यवस्थित कर सकते हैं ताकि हम बाइनरी सर्च ट्री बना सकें। जैसा कि हम बाइनरी सर्च ट्री के बारे में जानते हैं, लेफ्ट सबट्री में हमेशा छोटे मान होते हैं और राइट सबट्री में बड़े मान होते हैं। इसे हल कर

  1. पायथन में एक श्रेणी में XOR के साथ जोड़े गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास एक सरणी संख्या है और दो मान l और r हैं, हमें अच्छे जोड़े की संख्या ज्ञात करनी है। यहाँ एक अच्छी जोड़ी एक जोड़ी है (i, j) जहाँ 0 <=i

  1. पायथन में सभी विभिन्न पाठ्यक्रमों को कवर करने के लिए न्यूनतम सेमेस्टर की गणना करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक संख्या n है, यह दर्शाता है कि 1 से n तक के लेबल वाले n विभिन्न पाठ्यक्रम हैं। हमारे पास संबंध नामक एक सरणी भी है जहां संबंध [i] में एक जोड़ी (prevCourse_i, nextCourse_i) शामिल है, जो पाठ्यक्रम prevCourse_i और पाठ्यक्रम nextCourse_i के बीच एक पूर्वापेक्षा संबंध का प्रतिनिधित