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

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


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

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

0111
1111
0111

तो आउटपुट 15 होगा, क्योंकि 10 वर्ग भुजा 1 के हैं, 4 वर्ग भुजा 2 के हैं और 1 वर्ग भुजा 3 का है। कुल वर्गों की संख्या = 10 + 4 + 1 = 15।

हल करने के चरण

  • यदि मैट्रिक्स में एक ही 1 है, तो

    • 1 वापस करें

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

  • cols := मैट्रिक्स[0] की स्तंभ संख्या

  • result := 0

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

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

      • यदि row, 0 के समान है या col, 0 के समान है, तो

        • यदि matrix[row][col], 1 के समान है, तो

          • result := result + 1

      • अन्यथा जब matrix[row][col], 1 के समान है, तो

        • square := 1 + (matrix[row-1][col], matrix[row][col-1] और matrix[row-1][col-1] का न्यूनतम)

        • matrix[row][col] := square

        • result := result + square

  • result वापस करें

उदाहरण

def solve(matrix):
    if matrix == [[1]]:
        return 1
    rows = len(matrix)
    cols = len(matrix[0])
    result = 0
    for row in range(rows):
        for col in range(cols):
            if (row == 0 or col == 0):
                if matrix[row][col] == 1:
                    result += 1
            elif matrix[row][col] == 1:
                square = min(matrix[row-1][col], min(matrix[row][col-1], matrix[row-1][col-1])) + 1
                matrix[row][col] = square
                result += square
    return result

matrix = [[0,1,1,1],[1,1,1,1],[0,1,1,1]]
print(solve(matrix))

इनपुट

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

आउटपुट

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

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

  1. - Python में सजातीय सबस्ट्रिंग की संख्या गिनने का प्रोग्राम

    मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें s के सजातीय सबस्ट्रिंग की संख्या ढूंढनी है। उत्तर बहुत बड़ा हो सकता है, इसलिए उत्तर को 10^9+7 मॉड्यूलो वापस करें। एक स्ट्रिंग को सजातीय कहा जाता है जब स्ट्रिंग के सभी वर्ण समान हों। उदाहरण के लिए, यदि इनपुट है s = xyyzzzxx, तो आउटपुट 13 होगा क्योंकि सजाती

  1. Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें? Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें?

    डायरेक्टेड एसाइक्लिक ग्राफ (DAG) में जिन वर्टेक्सेज़ का इन-डिग्री 0 है, उनसे सभी नोड्स पहुंचे जा सकते हैं। एल्गोरिदम सभी नोड्स का सेट बनाएं (0 से n-1)। सभी एजेज़ के डेस्टिनेशन नोड्स (v) का सेट बनाएं। सोर्स नोड्स = सभी नोड्स - डेस्टिनेशन नोड्स (यानी इन-डिग्री 0 वाले)। यही मिनिमम वर्टेक्स सेट है। उद