কম্পিউটার

C++-এ খরচ সহ ক্রমাগত ডুপ্লিকেট অক্ষর মুছে ফেলার জন্য খরচ খোঁজার প্রোগ্রাম?


ধরুন আমাদের কাছে ছোট হাতের অক্ষর সহ একটি স্ট্রিং রয়েছে এবং আমাদের কাছে নন-নেতিবাচক মান কল করা খরচের একটি তালিকা রয়েছে, স্ট্রিং এবং তালিকার দৈর্ঘ্য একই। আমরা খরচ খরচের জন্য s[i] অক্ষর মুছে ফেলতে পারি, এবং তারপর s[i] এবং খরচ[i] উভয়ই মুছে ফেলা হয়। পরপর পুনরাবৃত্তি করা সমস্ত অক্ষর মুছে ফেলার জন্য আমাদের সর্বনিম্ন খরচ খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি s ="xxyyx" nums =[2, 3, 10, 4, 6] এর মত হয়, তাহলে আউটপুট হবে 6, যেহেতু আমরা মোট খরচের জন্য s[0] এবং s[3] কে মোমবাতি করি। 2 + 4 =6।

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

  • একটি স্ট্যাক স্ট্যাক সংজ্ঞায়িত করুন

  • খরচ :=0

  • আরম্ভ করার জন্য i :=0, যখন i

    • যদি st-এর আকার 0 না হয় এবং s[st-এর শীর্ষ] s[i] এর মতো হয়, তাহলে:

      • যদি nums[st এর উপরে]> nums[i] হয়, তাহলে:

        • খরচ :=খরচ + সংখ্যা[i]

      • অন্যথায়:

        • খরচ :=খরচ + সংখ্যা [স্টের উপরে]

        • st

          থেকে পপ উপাদান
        • আমাকে st

          এ ঠেলে দাও
    • অন্যথায়

      • আমাকে st

        এ ঠেলে দাও
  • ফেরত খরচ

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

class Solution {
   public:
   int solve(string s, vector<int>& nums) {
      stack<int> st;
      int cost = 0;
      for (int i = 0; i < s.size(); ++i) {
         if (st.size() && s[st.top()] == s[i]) {
            if (nums[st.top()] > nums[i]) {
               cost += nums[i];
            } else {
               cost += nums[st.top()];
               st.pop();
               st.push(i);
            }
         } else {
            st.push(i);
         }
      }
      return cost;
   }
};


int solve(string s, vector<int>& nums) {
   return (new Solution())->solve(s, nums);
}

main(){
   vector<int> v = {2, 3, 10, 4, 6};
   string s = "xxyyx";
   cout << solve(s, v);
}

ইনপুট

"xxyyx",{2,3,10,4,6}

আউটপুট

6

  1. C++ এ প্রতিটি কার্টেসিয়ান স্থানাঙ্ক সংযোগ করার জন্য সর্বনিম্ন খরচ খুঁজে বের করার জন্য প্রোগ্রাম

  2. C++ এ ডুপ্লিকেট সাবট্রিস খুঁজুন

  3. পাইথনে ক্রমাগত ডুপ্লিকেট অক্ষর মুছে ফেলার পর স্ট্রিং খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে ধারাবাহিক সাধারণ অক্ষর সহ সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম