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

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


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

उदाहरण के लिए, यदि इनपुट इस तरह है:

101
011
011

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

हल करने के चरण

  • m := मैट्रिक्स की पंक्ति संख्या

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

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

  • i को 0 से m - 1 तक की रेंज में लिए करें

    • j को 0 से n - 1 तक की रेंज में लिए करें

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

        • dp[i][j] := 1

      • अन्यथा जब matrix[i][j] शून्येतर है, तो

        • dp[i][j] := dp[i-1][j] + 1

  • total := 0

  • i को 0 से m - 1 तक की रेंज में लिए करें

    • j को 0 से n - 1 तक की रेंज में लिए करें

      • k को j+1 से n तक की रेंज में लिए करें

        • total := total + dp[i][j] से dp[i][k] का न्यूनतम

  • total वापस करें

उदाहरण

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))

इनपुट

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

आउटपुट

13
  1. पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की सूची है। हमारे पास x नामक एक और संख्या भी है। हमें nums से उन सभी नंबरों को फ़िल्टर करके ढूंढना है जो x से कम हैं। पायथन में filter() मेथड होता है जो फंक्शन को आर्गुमेंट के रूप में लेता है और इस फंक्शन का उपयोग करके फ़िल्टर करता है। तो, यदि इनपुट nums = [1,5

  1. - पायथन में एक रेंज में XOR वाले जोड़ों की गिनती करने का प्रोग्राम

    मान लीजिए हमारे पास एक सरणी nums है और दो मान l और r हैं। हमें अच्छे जोड़ों (nice pairs) की संख्या ज्ञात करनी है। यहाँ एक अच्छा जोड़ा (i, j) वह है जहां 0 ≤ i < j < nums का आकार और l ≤ (nums[i] XOR nums[j]) ≤ r हो।उदाहरण के लिए, यदि इनपुट nums = [4,1,7,2], l = 2, r = 6 है, तो आउटपुट 6 होगा क्योंकि अच

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

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