কম্পিউটার

C++-এ একটি অক্ষরের সমস্ত উপস্থিতি মুছে ফেলার পরে ASCII মানের যোগফলকে ছোট করুন


ধরুন আমাদের একটি স্ট্রিং আছে। একটি নির্দিষ্ট অক্ষরের প্রতিটি সংঘটন মুছে ফেলার পরে আমাদের স্ট্রিং থেকে প্রতিটি অক্ষরের ASCII মানের সমষ্টি কমিয়ে আনতে হবে। ধরুন "হ্যালো" এর মতো একটি স্ট্রিং দেওয়া হয়েছে ASCII অক্ষরের যোগফল (104 + 101 + 108 + 108 + 111) =532। এখন প্রতিটি অক্ষরের উপস্থিতি পরীক্ষা করুন।

  • h একবার হয়েছে, তাই খরচ হল 1 * 104 =104
  • ই একবার হয়েছে, তাই খরচ হল 1 * 101 =101
  • l একবার হয়েছে, তাই খরচ হল 2 * 108 =216
  • o একবার হয়েছে, তাই খরচ হল 1 * 111 =111

এখানে l সর্বাধিক সময়ের মধ্যে ঘটেছে, তাই যদি আমরা l এর সমস্ত উপস্থিতি মুছে ফেলি, তাহলে মানটি কম করা হবে। তাই প্রকৃতপক্ষে আমরা উপরের তালিকা থেকে সর্বোচ্চ মান সরিয়ে ফেলছি। এখানে চূড়ান্ত ফলাফল হবে 532 – 216 =316

যুক্তিটি সহজ প্রথমে আমাদের স্ট্রিংয়ের ASCII যোগফল নিতে হবে। তারপর স্ট্রিংটিতে উপস্থিত প্রতিটি অক্ষরের ফ্রিকোয়েন্সি গণনা করুন, তারপর সেই অক্ষরটি সরিয়ে ফেলুন যা ঘটনা * ASCII মান হিসাবে সর্বাধিক মান অবদান রাখছে। বিয়োগকৃত মান হল ফলাফল৷

উদাহরণ

#include <iostream>
using namespace std;
int minASCIISum(string str, int len) {
   int max_val = INT_MIN, sum = 0;
   int frequency[26] = { 0 };
   for (int i = 0; i < len; i++) {
      frequency[str[i] - 'a']++;
      sum += (int)str[i];
   }
   for (int i = 0; i < 26; i++)
   max_val = max(max_val, frequency[i] * (i + 'a'));
   return (sum - max_val);
}
int main() {
   string str = "hello";
   int n = str.length();
   cout << "Minimized Sum: " << minASCIISum(str, n);
}

আউটপুট

Minimized Sum: 316

  1. C++ এ K নেগেশানের পরে অ্যারের যোগফল সর্বাধিক করুন

  2. C++-এ সমস্ত সাব-সিকোয়েন্সের যোগফলের যোগফল নির্ণয় করুন

  3. C++ এ বারবার বিয়োগ করে সব উপাদান একই করার পর সর্বাধিক অ্যারের যোগফল খুঁজুন

  4. C++ এ a, b এবং c থেকে সমস্ত শূন্য অপসারণ করার পরে a + b =c বৈধ কিনা তা পরীক্ষা করুন