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

โค้ด C++ หาจำนวนการหมุนดิสก์เพื่อพิมพ์สตริง

สมมติว่าเราได้รับดิสก์หมุนที่มีตัวอักษรภาษาอังกฤษพิมพ์เล็กทั้ง 26 ตัว มีเครื่องพิมพ์ต่อกับดิสก์ ตัวอักษรที่อยู่ที่ตัวชี้ของดิสก์เป็นเวลา 3 วินาที จะถูกพิมพ์ออกมา ดิสก์เริ่มต้นอยู่ที่ตัวอักษร 'a' และไม่รีเซ็ตกลับตำแหน่งเริ่มต้นทุกครั้งที่พิมพ์ เราได้รับสตริง s และต้องพิมพ์สตริงที่กำหนด ทุกครั้งที่เลื่อนดิสก์ไปตัวอักษรอื่น จะนับเป็นการหมุน 1 ครั้ง เราต้องหาจำนวนการหมุนทั้งหมดที่ต้องใช้เพื่อพิมพ์สตริง s

เช่น ถ้าค่าที่ป้อนเข้าเป็น s = "elephant" ผลลัพธ์จะได้ 63

ขั้นตอนการแก้ปัญหา

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

t := 'a' res := 0 สำหรับ i := 0 เมื่อ i < ขนาดของ s เพิ่ม i ทีละ 1 ทำ:    res := res + min(|t - s[i]|, 26 - |t - s[i]|)    t := s[i] คืนค่า res

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

ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:

#include <bits/stdc++.h> using namespace std; #define N 100 int solve(string s) {    char t = 'a';    int res = 0;    for(int i = 0; i < s.size(); i++){       res += min(abs(t - s[i]), 26 - abs(t - s[i]));       t = s[i];    }    return res; } int main() {    string s = "elephant";    cout<< solve(s);    return 0; }

ข้อมูลนำเข้า

"elephant"

ข้อมูลส่งออก

63