কম্পিউটার

পাইথনে সাবস্ট্রিংগুলি অপসারণ থেকে সর্বাধিক স্কোর গণনা করার প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং s এবং দুটি মান x এবং y আছে। আমরা যে কোন সংখ্যক বার দুই ধরনের অপারেশন করতে পারি।

  • সার্চ সাবস্ট্রিং "ab", যদি উপস্থিত থাকে, তাহলে আমরা এটিকে সরিয়ে x পয়েন্ট অর্জন করতে পারি।

  • সার্চ সাবস্ট্রিং "ba", যদি উপস্থিত থাকে, তাহলে আমরা এটিকে সরিয়ে y পয়েন্ট অর্জন করতে পারি।

উপরোক্ত ক্রিয়াকলাপগুলি s-এ প্রয়োগ করার পরে আমাদের সর্বাধিক পয়েন্টগুলি খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি s ="cbbaacdeabb" x =4 y =5 এর মত হয়, তাহলে আউটপুটটি 14 হবে কারণ প্রাথমিক স্ট্রিং হল "cbbaacdeabb", তারপর 4 পেতে "cbbaacde(ab)b" ​​সরিয়ে ফেলুন, এখন স্ট্রিং " cbbaacdeb", তারপরে আরও 5 পেতে "cb(ba)acdeb" মুছে ফেলুন, তাই বর্তমান স্কোর 4+5 =9, এখন স্ট্রিং হল "cbacdeb", তারপর আবার "c(ba)cdeb" মুছে ফেলুন, অতিরিক্ত 5 পেতে তাই বর্তমান স্কোর 9+5=14, এবং স্ট্রিং হল "ccdeb", এখন এর পরে সরানোর কিছু নেই৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • a :='a', b :='b'
  • উত্তর :=0, a_st :=0, b_st :=0
  • যদি y> x হয়, তাহলে
    • a এবং b অদলবদল করুন
    • x এবং y অদলবদল করুন
  • s-এ প্রতিটি c-এর জন্য, করুন
    • যদি c হয় a এর মত, তাহলে
      • a_st :=a_st + 1
    • অন্যথায় যখন c হয় b এর মত, তারপর
      • যদি a_st অ-শূন্য হয়, তাহলে
        • উত্তর :=ans + x
        • a_st :=a_st - 1
      • অন্যথায়,
        • b_st +=1
    • অন্যথায়,
      • উত্তর :=ans + y * ন্যূনতম a_st এবং b_st
      • a_st :=0
      • b_st :=0
  • উত্তর দিন + y * সর্বনিম্ন a_st এবং b_st

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def solve(s, x, y):
   a = 'a'
   b = 'b'
   ans = 0
   a_st = 0
   b_st = 0
   if y > x:
      a,b = b,a
      x,y = y,x
   for c in s:
      if c == a:
         a_st += 1
      elif c == b:
         if a_st:
            ans += x
            a_st -= 1
         else: b_st += 1
      else:
         ans += y * min(a_st, b_st)
         a_st = 0
         b_st = 0
   return ans + y * min(a_st, b_st)

s = "cbbaacdeabb"
x = 4
y = 5
print(solve(s, x, y))

ইনপুট

"cbbaacdeabb", 4, 5

আউটপুট

14

  1. পাইথনে সম্ভাব্য সকল বৈধ পথ থেকে সর্বোচ্চ স্কোর খুঁজে বের করার প্রোগ্রাম

  2. পাইথন প্রোগ্রামের একটি স্ট্রিং থেকে nম অক্ষর সরানো হচ্ছে

  3. একটি স্ট্রিং থেকে nম অক্ষর অপসারণের জন্য পাইথন প্রোগ্রাম

  4. একটি স্ট্রিং থেকে n-ম অক্ষর অপসারণের জন্য পাইথন প্রোগ্রাম?