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

Python से बाइनरी ग्रिड में मेजर डायगोनल के ऊपर ज़ीरोज़ के लिए मिनिमम स्वैप्स कैसे ढूंढें?

n×n बाइनरी मैट्रिक्स में एडजेसेंट रो स्वैप्स से मेजर डायगोनल के ऊपर सभी एलिमेंट्स 0 करने के लिए मिनिमम स्वैप्स ढूंढें।

एल्गोरिदम

  • प्रत्येक रो के लिए राइटमोस्ट 1 की पोजीशन ढूंढें → m[i] = n - j - 1 (डायगोनल से दूरी)।
  • ग्रीडी: i=0 से n-1, ऐसी रो ढूंढें जिसका m[j] >= n-i-1 हो (यानी डायगोनल के ऊपर 1 न हो)।
  • उसे i-th पोजीशन पर लाने के लिए j-i स्वैप्स करें (ऐरे शिफ्ट)।
  • नहीं मिली तो -1 रिटर्न।

उदाहरण कोड


def solve(matrix):
    n = len(matrix)
    m = [n] * n
    for i in range(n):
        for j in range(n-1, -1, -1):
            if matrix[i][j] == 1:
                m[i] = n - j - 1
                break
    t, ans = 0, 0
    for i in range(n):
        t += 1
        flag = False
        for j in range(i, n):
            if m[j] >= n - t:
                ans += j - i
                flag = True
                break
        if not flag: return -1
        m[i+1:j+1] = m[i:j]
    return ans

# टेस्ट: [[0,1,0],[0,1,1],[1,0,0]] -> आउटपुट: 2

इनपुट/आउटपुट

इनपुट: [[0,1,0],[0,1,1],[1,0,0]]
आउटपुट: 2

  1. Python से बाइनरी ट्री में दिए गए नोड के दाएं वाले नोड को कैसे ढूंढें? Python से बाइनरी ट्री में दिए गए नोड के दाएं वाले नोड को कैसे ढूंढें?

    लेवल ऑर्डर ट्रैवर्सल (BFS) से दिए गए नोड के उसी लेवल पर दाएं पड़ोसी नोड को ढूंढें। एल्गोरिदम क्यू से BFS, लेवल दर लेवल प्रोसेस करें। प्रत्येक लेवल के नोड्स को temp लिस्ट में स्टोर करें। अगर टारगेट नोड u मिले तो उसका इंडेक्स नोट करें। अगर इंडेक्स अंतिम है तो None रिटर्न (दाएं कोई नहीं)। अन्यथा temp[

  1. - Python से टारगेट ऐरे बनाने के लिए मिनिमम फंक्शन कॉल्स कैसे ढूंढें?

    ऑपरेशन: (0) इंडेक्स पर +1, (1) पूरे ऐरे को ×2। जीरो ऐरे से टारगेट ऐरे बनाने के लिए मिनिमम ऑपरेशन्स ढूंढें। एल्गोरिदम प्रत्येक नंबर के लिए: बाइनरी रिप्रेजेंटेशन में 1s की संख्या = इन्क्रीमेंट ऑपरेशन्स। सबसे लंबी बाइनरी लंबाई - 1 = डबल ऑपरेशन्स (सभी एलिमेंट्स पर एक साथ)। टोटल = Σइन्क्रीमेंट्स + मैक्स

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

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