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

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


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

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

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

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

स्ट्रिंग 'tpoint' बनाने की लागत नीचे वर्णित है:

str = 't'; एक नया अक्षर जोड़ा गया, इसलिए लागत 5 है।
str = 'tp'; एक नया अक्षर जोड़ा गया, इसलिए लागत 5 है।
str = 'tpo'; एक नया अक्षर जोड़ा गया, इसलिए लागत 5 है।
str = 'tpoi'; एक नया अक्षर जोड़ा गया, इसलिए लागत 5 है।
str = 'tpoin'; एक नया अक्षर जोड़ा गया, इसलिए लागत 5 है।
str = 'tpoint'; सबस्ट्रिंग 't' जोड़ा गया, इसलिए लागत 4 है।

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

समाधान दृष्टिकोण

यह समस्या डायनामिक प्रोग्रामिंग और स्ट्रिंग मिलान का उपयोग करती है। प्रत्येक पोजीशन के लिए, हम सबसे लंबा सबस्ट्रिंग ढूंढते हैं जिसे पहले बने भाग से कॉपी किया जा सकता है।

  • largest ऐरे की गणना करें जहां largest[i] इंडेक्स i पर समाप्त होने वाला सबसे लंबा सबस्ट्रिंग है जो पहले के भाग में मौजूद है।
  • डायनामिक प्रोग्रामिंग ऐरे c बनाएं जहां c[i] पहले i+1 अक्षर बनाने की न्यूनतम लागत है।
  • प्रत्येक पोजीशन के लिए, या तो एक अक्षर जोड़ें (लागत a) या सबसे लंबे मिलान वाले सबस्ट्रिंग को कॉपी करें (लागत r)।

पायथन कार्यान्वयन

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. Python प्रोग्राम से सेट का उपयोग करके दी गई स्ट्रिंग में स्वरों की संख्या गिनना Python प्रोग्राम से सेट का उपयोग करके दी गई स्ट्रिंग में स्वरों की संख्या गिनना

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

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

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

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

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