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

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


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

ดังนั้น หากอินพุตเป็น s ="elephant" เอาต์พุตจะเป็น 63

ขั้นตอน

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

t := 'a'
res := 0
for initialize i := 0, when i < size of s, update (increase i by 1),
do:
   res := res + minimum of (|t - s[i]|, 26 - |t - s[i]|)
   t := s[i]
return 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