เราได้รับตัวเลขบวกหนึ่งตัว ให้เรียกว่า num และงานคือคำนวณจำนวนการเปลี่ยนแปลงของไฟ LED ที่แสดงทีละหลัก เราจะสมมติว่าเริ่มต้น LED ทั้งหมดดับ และจะเปิดตามค่าของสตริง
เพื่อแก้คำถามนี้ เราต้องเข้าใจว่า seven segment display คืออะไรและการทำงานอย่างไร
Seven Segment Displays คืออะไร
Seven segment displays เป็นอุปกรณ์แสดงผลเอาต์พุทที่ให้วิธีแสดงข้อมูลในรูปภาพ ข้อความ หรือตัวเลขฐานสิบ ซึ่งเป็นทางเลือกแทน dot matrix displays ที่ซับซ้อนกว่า ใช้กันอย่างแพร่หลายในนาฬิกาไดจิตอล เครื่องคิดเลขพื้นฐาน ミ터อิเล็กทรอนิกส์ และอุปกรณ์อิเล็กทรอนิกส์อื่นๆ ที่แสดงข้อมูลตัวเลข ประกอบด้วย 7 ส่วนของไดโอดปล่อยแสง (LEDs) ที่ประกอบรูปแบบคล้ายตัวเลข 8

การทำงานของ Seven Segment Displays
ตัวเลข 8 แสดงเมื่อให้ไฟฟ้าแก่ทุกเซ็กเมนต์ และถ้าตัดไฟของ 'g' จะแสดงตัวเลข 0 ใน seven segment display สามารถให้ไฟฟ้า (หรือแรงดัน) ที่ขาที่ต่างกันพร้อมกันได้ จึงสามารถสร้างการรวมกันของตัวเลข 0 ถึง 9 เนื่องจาก seven segment displays ไม่สามารถสร้างตัวอักษรเช่น X และ Z ได้ จึงไม่สามารถใช้สำหรับตัวอักษร แต่สามารถใช้แสดงขนาดตัวเลขฐานสิบได้ อย่างไรก็ตาม สามารถสร้างตัวอักษร A, B, C, D, E, F ได้ จึงใช้แทนเลขฐานสิบหกได้ด้วย

ตัวอย่าง
อินพุต – num = "123" เอาต์พุต – count is 5
คำอธิบาย – LED ทั้งหมดที่ต้องเปิดสำหรับ 1 คือ 2, สำหรับ 2 คือ 5 และสำหรับ 3 คือ 5 ดังนั้นจำนวนการเปลี่ยนแปลงทั้งหมดในการแสดงคือ 5
อินพุต – num = "576" เอาต์พุต – count is 10
คำอธิบาย – LED สำหรับ 5 คือ 5, สำหรับ 7 คือ 3 และสำหรับ 6 คือ 6 จำนวนการเปลี่ยนแปลงทั้งหมดคือ 10
วิธีการที่ใช้ในโปรแกรมด้านล่าง
- รับสตริงของค่าจำนวนเต็มที่กำหนดตัวเลขที่จะเปิด
- คำนวณความยาวของสตริงด้วย length()
- สร้างอาร์เรย์เก็บค่า LED ทั้งหมด
- ใช้ตัวแปรชั่วคราว temp เก็บค่า
- เริ่มลูป for i จาก 1 ถึง i น้อยกว่าความยาว
- ในลูป ตั้งค่า temp ด้วย temp + abs([LED[str[i] - '0'] - LED[str[i-1] - '0'])
- คืนค่า count
- พิมพ์ผลลัพธ์
ตัวอย่าง
#include <iostream>
using namespace std;
int countled(string str){
int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 };
int len = str.length();
int res = Led[str[0] - '0'];
for (int i = 1; i < len; i++){
res = res + abs(Led[str[i] - '0'] - Led[str[i - 1] - '0']);
}
return res;
}
int main(){
string str = "123";
cout << "count is " << countled(str);
return 0;
}เอาต์พุต
count is 5