Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tìm số lần quay quay số để in một chuỗi

Giả sử, chúng ta được đưa cho một mặt số quay có chứa tất cả các bảng chữ cái tiếng Anh viết thường. Có một máy in được gắn vào mặt số và bất kỳ ký tự nào nằm trong con trỏ của mặt số quay trong 3 giây, sẽ được in. Mặt số quay ban đầu vẫn ở chữ 'a' và nó không đặt lại về vị trí ban đầu bất cứ khi nào nó in một ký tự. Chúng ta được cung cấp một chuỗi s và chúng ta phải in ra chuỗi đó. Bất cứ khi nào chúng ta di chuyển mặt số sang một chữ cái khác, một số lần quay sẽ diễn ra. Chúng ta phải tìm ra tổng số lần quay cần thiết để in chuỗi đã cho 's'.

Vì vậy, nếu đầu vào là s =​​"con voi", thì đầu ra sẽ là 63.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

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

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
}

Đầu vào

"elephant"

Đầu ra

63