কম্পিউটার টিউটোরিয়াল

C++-এ একটি ক্যারেক্টারের সব ঘটনা মুছে ASCII ভ্যালুর যোগফল ন্যূনতম করা


ধরুন আমাদের একটি স্ট্রিং আছে। আমাদের স্ট্রিংয়ের প্রতিটি ক্যারেক্টারের ASCII ভ্যালুর যোগফল ন্যূনতম করতে হবে, একটি নির্দিষ্ট ক্যারেক্টারের সব ঘটনা মুছে ফেলার পর। ধরুন স্ট্রিং "hello" দিয়ে আছে, ASCII যোগফল = (104 + 101 + 108 + 108 + 111) = 532। এখন প্রতিটি ক্যারেক্টারের ঘটনা চেক করুন:

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

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

লজিকটি সহজ: প্রথমে স্ট্রিংয়ের ASCII যোগফল বের করুন। তারপর প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি কাউন্ট করুন, তারপর সেই ক্যারেক্টারটি রিমুভ করুন যা occurrence * 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 শূন্য মুছে ফেলার পরেও বৈধ কিনা তা যাচাই করা