Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में मूल बिंदु से अधिकतम दूरी


मान लीजिए हमारे पास एक स्ट्रिंग s है जहां प्रत्येक अक्षर या तो "L", "R" या "?" है। "L" का अर्थ है एक इकाई बाएं चलना, "R" का अर्थ है एक इकाई दाएं चलना, और "?" का अर्थ है या तो "L" या "R"। यदि हम स्थिति 0 पर हैं, तो हमें "?" को "L" या "R" से बदलकर 0 से अधिकतम संभव दूरी ज्ञात करनी है।

उदाहरण के लिए, यदि इनपुट "LLRRL??" है, तो आउटपुट 3 होगा। ? को L से बदलकर 5 इकाई बाएं और 2 इकाई दाएं चलते हैं, इसलिए अधिकतम विस्थापन 3 है।

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • op := 0, l := 0, r := 0
  • s में प्रत्येक it के लिए:
    • यदि it == 'L', तो l++
    • अन्यथा यदि it == 'R', तो r++
    • अन्यथा op++
  • max(l, r) - min(l, r) + op लौटाएं

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int solve(string s) {
        int op = 0;
        int l = 0;
        int r = 0;
        for (auto &it : s) {
            if (it == 'L') {
                l++;
            } else if (it == 'R') {
                r++;
            } else {
                op++;
            }
        }
        return max(l, r) - min(l, r) + op;
    }
};

int main() {
    Solution ob;
    cout << (ob.solve("LLRRL??"));
    return 0;
}

इनपुट

"LLRRL??"

आउटपुट

3
  1. 2D मैट्रिक्स से लिंक्ड लिस्ट बनाएं C++ में (पुनरावर्ती दृष्टिकोण) 2D मैट्रिक्स से लिंक्ड लिस्ट बनाएं C++ में (पुनरावर्ती दृष्टिकोण)

    मान लीजिए हमारे पास एक मैट्रिक्स है, हमें इसे पुनरावर्ती दृष्टिकोण का उपयोग करके 2D लिंक्ड लिस्ट में बदलना है। इस लिस्ट में राइट (दायां) और डाउन (नीचे) पॉइंटर होंगे। उदाहरण के लिए, यदि इनपुट इस तरह का है: 10 20 30 40 50 60 70 80 90 तो आउटपुट होगा: इसे हल करने के लिए, हम निम्न चरणों का पाल

  1. - C++ में रोबोट की मूल स्थान पर वापसी

    मान लीजिए एक रोबोट है और इसकी शुरुआती स्थिति (0, 0) है। यदि हमारे पास इसकी गतिविधियों का क्रम है, तो हमें जांचना होगा कि क्या यह रोबोट अपनी चालें पूरी करने के बाद (0, 0) पर पहुंचता है। चाल अनुक्रम एक स्ट्रिंग के रूप में दिया जाता है, और वर्ण moves[i] इसकी iवीं चाल को दर्शाता है। प्रतीक हैं: R दाएं

  1. C++ में प्रीऑर्डर ट्रैवर्सल से ट्री पुनर्प्राप्त करना C++ में प्रीऑर्डर ट्रैवर्सल से ट्री पुनर्प्राप्त करना

    मान लीजिए एक बाइनरी ट्री है। हम बाइनरी ट्री की रूट पर एक प्रीऑर्डर डेप्थ फर्स्ट सर्च चलाएंगे। इस ट्रैवर्सल में प्रत्येक नोड पर, आउटपुट D संख्या में डैश होगा (यहां D इस नोड की गहराई है), उसके बाद हम इस नोड का मान प्रदर्शित करते हैं। जैसा कि हम जानते हैं यदि किसी नोड की गहराई D है, तो उसके तत्काल बच्