สมมติมี 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