मान लीजिए, हमें एक रोटरी डायल दिया गया है जिसमें सभी लोअरकेस अंग्रेजी वर्णमाला हैं। डायल से एक प्रिंटर जुड़ा हुआ है और जो भी वर्ण रोटरी डायल के पॉइंटर पर 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