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

Python में पंक्ति और स्तंभ योग दिए गए वैध मैट्रिक्स खोजने का प्रोग्राम


मान लीजिए हमारे पास दो ऐरे rowSum और colSum हैं जिनमें नॉन-नेगेटिव मान हैं जहां rowSum[i] में iवीं पंक्ति के तत्वों का योग है और colSum[j] में jवें स्तंभ के तत्वों का योग है एक 2D मैट्रिक्स का। हमें दिए गए rowSum और colSum मानों को संतुष्ट करने वाले नॉन-नेगेटिव मानों के आकार (len(rowSum) x len(colSum)) का कोई भी मैट्रिक्स ढूंढना है।

उदाहरण के लिए, यदि इनपुट है rowSum = [13,14,12], colSum = [9,13,17], तो आउटपुट होगा:

940
095
0012

समाधान के चरण

  1. matrix := खाली मैट्रिक्स बनाएं
  2. visited := set()
  3. minimum() फंक्शन परिभाषित करें जो r, c लेता है:
    • min_total := infinity
    • type := ""
    • i को 0 से len(r)-1 तक:
      • यदि r[i] < min_total:
        • index := i
        • type := 'row'
        • min_total := r[i]
    • i को 0 से len(c)-1 तक:
      • यदि c[i] < min_total:
        • min_total := c[i]
        • type := 'col'
        • index := i
    • यदि type == 'row':
      • r[index] := infinity
      • i को 0 से len(c)-1 तक:
        • यदि c[i] != infinity and c[i] >= min_total:
          • c[i] := c[i] - min_total
          • matrix[index][i] := min_total
          • लूप से बाहर निकलें
      • यदि type == 'col':
        • c[index] := infinity
        • i को 0 से len(r)-1 तक:
          • यदि r[i] != infinity and r[i] >= min_total:
            • r[i] := r[i] - min_total
            • matrix[i][index] := min_total
            • लूप से बाहर निकलें
      • visited.add((index, type))
      • मुख्य मेथड से:
        • while len(visited) != len(r) + len(c):
          • minimum(r, c)
        • matrix वापस करें

उदाहरण

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

def solve(r, c):
    matrix = [[0]*len(c) for _ in range(len(r))]
    visited = set()
    def minimum(r, c):
        min_total = float('inf')
        type = ''
        for i in range(len(r)):
            if r[i] < min_total:
                index = i
                type = 'row'
                min_total = r[i]
        for i in range(len(c)):
            if c[i] < min_total:
                min_total = c[i]
                type = 'col'
                index = i
        if type == 'row':
            r[index] = float('inf')
            for i in range(len(c)):
                if c[i] != float('inf') and c[i] >= min_total:
                    c[i] -= min_total
                    matrix[index][i] = min_total
                    break
        if type == 'col':
            c[index] = float('inf')
            for i in range(len(r)):
                if r[i] != float('inf') and r[i] >= min_total:
                    r[i] -= min_total
                    matrix[i][index] = min_total
                    break
        visited.add((index, type))
    while len(visited) != len(r) + len(c):
        minimum(r, c)
    return matrix

rowSum = [13,14,12]
colSum = [9,13,17]
print(solve(rowSum, colSum))

इनपुट

[13,14,12], [9,13,17]

आउटपुट

[[9, 4, 0], [0, 9, 5], [0, 0, 12]]
  1. - पायथन में दिए गए सेल की पंक्ति और/या कॉलम को छोड़कर मैट्रिक्स के सभी तत्वों का योग खोजें

    मान लीजिए हमारे पास एक 2D मैट्रिक्स और सेल इंडेक्स का एक सेट है। सेल इंडेक्स को (i, j) के रूप में दर्शाया जाता है जहां i पंक्ति है और j कॉलम है, अब, प्रत्येक दिए गए सेल इंडेक्स (i, j) के लिए, हमें उन सभी मैट्रिक्स तत्वों का योग ढूंढना है जो i-वीं पंक्ति और/या j-वें कॉलम में मौजूद तत्वों को छोड़कर है

  1. - Python प्रोग्राम में मैट्रिक्स का ट्रांसपोज़ खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक मैट्रिक्स दिया गया है, हमें मैट्रिक्स का ट्रांसपोज़ प्रदर्शित करने की आवश्यकता है। मैट्रिक्स का ट्रांसपोज़ A[i][j] पर मौजूद मान को A[j][i] से बदलकर प्राप्त किया जाता है। आइए नीचे कार्यान्वयन में अवधारणा का न

  1. पायथन प्रोग्राम: मैट्रिक्स का ट्रांसपोज़ ढूंढें पायथन प्रोग्राम: मैट्रिक्स का ट्रांसपोज़ ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक मैट्रिक्स दिए जाने पर, हमें ट्रांसपोज़ को उसी मैट्रिक्स में स्टोर करना होगा और इसे प्रदर्शित करना होगा। मैट्रिक्स का ट्रांसपोज़ पंक्तियों को कॉलम में और कॉलम को पंक्तियों में बदलकर