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

पायथन में शुरुआत से अंत तक लागत k वाले पथों की संख्या गिनने का प्रोग्राम


मान लीजिए हमारे पास एक 2D बाइनरी मैट्रिक्स और एक मान k है। ऊपरी-बाएं सेल से शुरू करके, हमें नीचे-दाएं सेल तक जाना है। एक चरण में हम केवल नीचे या दाएं जा सकते हैं। एक पथ का स्कोर पथ पर सेल्स के मानों का योग है। हमें शुरुआती सेल से अंतिम सेल तक स्कोर k वाले पथों की संख्या ज्ञात करनी है। यदि तरीके बहुत अधिक हैं तो परिणाम 10^9+7 से मॉड्यूलो वापस करें।

उदाहरण के लिए, यदि मैट्रिक्स है:

001
101
010
K = 2, तो आउटपुट 4 होगा।

एल्गोरिदम (रिकर्सिव DFS)

  • deno := 10^9 + 7
  • m := पंक्तियों की संख्या, n := कॉलम की संख्या
  • dfs(i, j, pts) फ़ंक्शन परिभाषित करें:
    • यदि i >= m या j >= n, तो 0 वापस करें
    • pts += matrix[i][j]
    • यदि i == m-1 और j == n-1, तो 1 यदि pts == k अन्यथा 0 वापस करें
    • dfs(i+1, j, pts) + dfs(i, j+1, pts) वापस करें
  • मुख्य विधि से dfs(0, 0, 0) % deno वापस करें

उदाहरण

class Solution:
    def solve(self, matrix, k):
        m, n = len(matrix), len(matrix[0])
        def dfs(i=0, j=0, pts=0):
            if i >= m or j >= n: return 0
            pts += matrix[i][j]
            if i == m - 1 and j == n - 1:
                return int(pts == k)
            return dfs(i + 1, j, pts) + dfs(i, j + 1, pts)
        return dfs() % (10**9 + 7)

ob = Solution()
matrix = [[0, 0, 1], [1, 0, 1], [0, 1, 0]]
k = 2
print(ob.solve(matrix, k))

इनपुट

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

आउटपुट

4
  1. पायथन में पहले से अंतिम नोड तक प्रतिबंधित पथों की संख्या ज्ञात करने का प्रोग्राम पायथन में पहले से अंतिम नोड तक प्रतिबंधित पथों की संख्या ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास एक अनिर्देशित भारित संयुक्त ग्राफ है। ग्राफ में n नोड्स हैं और वे 1 से n तक लेबल किए गए हैं। प्रारंभ से अंत तक एक पथ नोड्स के अनुक्रम की तरह है जैसे [z0, z1, z2, ..., zk] यहां z0 प्रारंभ नोड है और zk अंत नोड है और 0 <= i dist(zi+1) जहां 0 <= i <= k-1। इसलिए, हमें नोड 1 से नोड n

  1. पायथन में दिए गए एज को शामिल करने वाले अद्वितीय पथों की संख्या गिनने का प्रोग्राम पायथन में दिए गए एज को शामिल करने वाले अद्वितीय पथों की संख्या गिनने का प्रोग्राम

    मान लीजिए हमारे पास (u, v) के रूप में एज की सूची है जो एक ट्री दर्शाती है। प्रत्येक एज के लिए हमें उन अद्वितीय पथों की कुल संख्या ज्ञात करनी है जिनमें वह एज शामिल है, उसी क्रम में जैसे इनपुट में दिया गया है। उदाहरण के लिए, यदि इनपुट है edges = [[0, 1],[0, 2],[1, 3],[1, 4]], तो आउटपुट [6, 4, 4, 4] ह

  1. बाइनरी ट्री में पथ जिनका योग k हो, उनकी संख्या गिनने का पायथन प्रोग्राम बाइनरी ट्री में पथ जिनका योग k हो, उनकी संख्या गिनने का पायथन प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री और एक मान k है, हमें उन अद्वितीय नोड-टू-सबचाइल्ड पथों की संख्या ढूंढनी है जिनका योग k के बराबर है। उदाहरण के लिए, यदि इनपुट इस तरह है: और k = 5, तो आउटपुट 2 होगा, क्योंकि पथ हैं [2, 3] और [1, 4]। इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे: count := एक मैप