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

पायथन में किसी दिए गए स्ट्रिंग को बनाने के लिए न्यूनतम लागत निर्धारित करने का कार्यक्रम

मान लीजिए, हमें एक स्ट्रिंग 'str' बनानी है जिसकी लंबाई n है। स्ट्रिंग बनाने के लिए, हम दो ऑपरेशन कर सकते हैं।

  • लागत a के लिए str के अंत में एक वर्ण जोड़ा जा सकता है।
  • कॉस्ट r के लिए str के अंत में एक सबस्ट्रिंग sub_str जोड़ा जा सकता है।

हमें स्ट्रिंग स्ट्र के निर्माण की न्यूनतम लागत की गणना करनी होगी।

इसलिए, यदि इनपुट a =5, r =4, str ='tpoint' जैसा है, तो आउटपुट 29 होगा।

स्ट्रिंग 'टपॉइंट' बनाने के लिए, लागत नीचे वर्णित है -

str = 't'; a new character added, therefore the cost is 5.
str = 'tp'; a new character added, therefore the cost is 5.
str = 'tpo'; a new character added, therefore the cost is 5.
str = 'tpoi'; a new character added, therefore the cost is 5.
str = 'tpoin'; a new character added, therefore the cost is 5.
str = 'tpoint'; substring 't' is added, therefore the cost is 4.

कुल लागत 5 + 5 + 5 + 5 + 5 + 4 =29 है।

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

  • आकार :=str का आकार
  • सबसे बड़ी :=एक नई सूची
  • निम्न :=0
  • 1 से आकार+1 तक के अप के लिए, करें
    • जबकि str[सूचकांक निम्न से अनुक्रमणिका upp तक] str में मौजूद नहीं है [सूचकांक 0 से अनुक्रमणिका निम्न तक], करें
      • निम्न :=कम + 1
    • सबसे बड़े के अंत में (ऊपर - नीचे) डालें
  • c :=एक नई सूची जिसमें एक है
  • 1 से लेकर आकार तक के i के लिए, करें
    • यदि सबसे बड़ा[i] 0 के समान है, तो
      • c के अंत में (c + a का अंतिम तत्व) डालें
    • अन्यथा,
      • c के अंत में कम से कम (c + a का अंतिम तत्व), (c[i - सबसे बड़ा[i]] + r) डालें
  • c का अंतिम तत्व लौटाएं

उदाहरण

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

def solve(a, r, str):
   size = len(str)
   largest = []
   low = 0
   for upp in range(1, size+1):
      while str[low:upp] not in str[:low]:
         low += 1
      largest.append(upp - low)

   c = [a]
   for i in range(1, size):
      if largest[i] == 0:
         c.append(c[-1] + a)
      else:
         c.append(min(c[-1] + a, c[i - largest[i]] + r))

   return c[-1]

print(solve(5, 4, 'tpoint'))

इनपुट

5, 4, 'tpoint'

आउटपुट

29

  1. किसी दिए गए स्ट्रिंग में सेट का उपयोग करके स्वरों की संख्या गिनने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक स्ट्रिंग दी गई है, हमें दिए गए स्ट्रिंग में सेट का उपयोग करके स्वरों की संख्या गिनने की जरूरत है। यहां हम पूरी स्ट्रिंग को पार करते हैं और जांचते हैं कि प्रत्येक वर्ण एक स्वर है या नहीं और गिनती में वृद्धि क

  1. पायथन प्रोग्राम यह जाँचने के लिए कि क्या दी गई स्ट्रिंग स्वर है पालिंड्रोम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें स्ट्रिंग (स्वर और व्यंजन दोनों अक्षरों से युक्त) दी गई है, सभी व्यंजनों को हटा दें, फिर जांचें कि परिणामी स्ट्रिंग एक पैलिंड्रोम है या नहीं। यहां हम सबसे पहले स्ट्रिंग में मौजूद सभी व्यंजनों को हटाते हैं। प्रत्य

  1. पायथन प्रोग्राम यह जाँचने के लिए कि क्या दिया गया स्ट्रिंग पैंग्राम है

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक स्ट्रिंग इनपुट को देखते हुए, हमें यह जांचने के लिए एक पायथन प्रोग्राम जेनरेट करना होगा कि वह स्ट्रिंग पंग्राम है या नहीं। पंग्राम एक वाक्य/शब्दों की श्रृंखला है जिसमें अंग्रेजी अक्षर संग्रह मे