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

पायथन में बाद के चरणों से अधिकतम पैलिंड्रोम लंबाई खोजने का कार्यक्रम

मान लीजिए कि हमारे पास दो तार हैं, s और t। हम निम्नलिखित तरीके से एक स्ट्रिंग बनाना चाहते हैं -

  • एस से कुछ गैर-रिक्त अनुवर्ती उप 1 चुनें।

  • टी से कुछ गैर-रिक्त अनुवर्ती उप 2 चुनें।

  • स्ट्रिंग बनाने के लिए सब1 और सब2 को संयोजित करें।

हमें सबसे लंबे पैलिंड्रोम की लंबाई का पता लगाना है जिसे वर्णित तरीके से बनाया जा सकता है। अगर हम कोई पैलिंड्रोम नहीं बना सकते हैं, तो 0.

इसलिए, यदि इनपुट s ="हिलरेस" t ="कारगेम" जैसा है, तो आउटपुट 7 होगा क्योंकि हम s से "रेस" और r से "कार" ले सकते हैं, इसलिए "रेसकार" लंबाई 7 के साथ पैलिंड्रोम है ।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=s का आकार, m :=t का आकार

  • शब्द:=एस + टी

  • dp :=आकार (n+m) x (n+m) का 2D सरणी बनाएं और 0

    से भरें
  • i के लिए (n + m -1) से 0 की सीमा में, 1 से घटाएं, करें

    • j के लिए i से n + m-1 की श्रेणी में, करें

      • अगर मैं j के समान हूं, तो

        • डीपी [आई, जे]:=1

      • अन्यथा जब शब्द [i] शब्द [j] के समान हो, तब

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

      • अन्यथा,

        • dp[i, j] =अधिकतम dp[i + 1, j] और dp[i, j-1]

  • उत्तर :=0

  • मैं के लिए 0 से n -1 की सीमा में, करो

    • j के लिए m - 1 से -1 की श्रेणी में, 1 से घटाएं, करें

      • यदि s[i] t[j] के समान है, तो

        • ans =अधिकतम ans और dp[i, n + j]

  • वापसी उत्तर

उदाहरण

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

def solve(s, t):
   n, m = len(s), len(t)
   word = s + t
   dp = [[0] * (n + m) for _ in range(n + m)]

   for i in range(n + m - 1, -1,-1):
      for j in range(i, n + m):
         if i == j:
            dp[i][j] = 1
         elif word[i] == word[j]:
            dp[i][j] = 2 + dp[i + 1][j - 1]
         else:
            dp[i][j] = max(dp[i + 1][j], dp[i][j - 1])
   ans = 0
   for i in range(n):
      for j in range(m - 1, -1, -1):
         if s[i] == t[j]:
            ans = max(ans, dp[i][n + j])
   return ans

s = "hillrace"
t = "cargame"
print(solve(s, t))

इनपुट

[[2,2],[1,2],[3,2]], [[3,1],[3,3],[5,2]]

आउटपुट

7

  1. पायथन में गैर-साझा शब्दों की अधिकतम लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास शब्दों नामक लोअरकेस वर्णानुक्रम की एक सूची है, हमें दो अलग-अलग शब्दों की लंबाई का अधिकतम योग खोजना होगा जो एक सामान्य अक्षर साझा नहीं करते हैं। इसलिए, यदि इनपुट शब्दों की तरह है =[abcd, mno , abdcmno, amno], तो आउटपुट 7 होगा, क्योंकि शब्द साझा नहीं करते हैं कोई भी सामान्य अक्ष

  1. पायथन में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई का पता लगाना है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। इसलिए यदि स्ट्रिंग BABAC है, तो सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग BAB है। और लंबाई 3 है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  1. सूची से एन सबसे बड़े तत्वों को खोजने के लिए पायथन कार्यक्रम

    एक पूर्णांक सूची को देखते हुए, हमारा कार्य सूची में N सबसे बड़े तत्वों को खोजना है। उदाहरण Input : [40, 5, 10, 20, 9] N = 2 Output: [40, 20] एल्गोरिदम Step1: Input an integer list and the number of largest number. Step2: First traverse the list up to N times. Step3: Each traverse find the largest va