Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลด ASCII Values Sum หลัง Remove Character ทั้งหมดใน C++

สมมติมี String ต้อง Minimize ผลรวม ASCII Values หลัง Remove ทุก Occurrence ของ Character หนึ่งตัว ตัวอย่าง "hello" ASCII Sum = 104+101+108+108+111 = 532 ตรวจสอบ Occurrences:

  • h: 1 ครั้ง Cost = 1×104 = 104
  • e: 1 ครั้ง Cost = 1×101 = 101
  • l: 2 ครั้ง Cost = 2×108 = 216
  • o: 1 ครั้ง Cost = 1×111 = 111

l มี Occurrence × ASCII สูงสุด ลบทั้งหมดได้ค่าต่ำสุด ผลลัพธ์ = 532 - 216 = 316

ตรรกะ: หา ASCII Sum ทั้ง String นับ Frequency แต่ละ Character ลบ Character ที่ Contribute ค่ามากที่สุด (Occurrence × ASCII)

ตัวอย่างโค้ด C++

#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