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

N से M तक पहुंचने के लिए न्यूनतम चरणों की संख्या खोजें C++ में

मान लीजिए हमारे पास दो पूर्णांक N और M हैं। हमें N से M तक पहुंचने के लिए न्यूनतम चरणों की संख्या खोजनी है, दिए गए ऑपरेशन करके -

  • संख्या x को 2 से गुणा करें, तो x 2*x हो जाएगा
  • संख्या x से एक घटाएं, तो संख्या x - 1 हो जाएगी

यदि N = 4 और M = 6, तो आउटपुट 2 होगा। तो यदि हम ऑपरेशन नंबर 2 को N पर करते हैं, तो N 3 बन जाता है, फिर ऑपरेशन नंबर 1 को N के अपडेटेड मान पर करते हैं, तो यह 2 * 3 = 6 हो जाता है। तो न्यूनतम चरणों की संख्या 2 होगी।

इस समस्या को हल करने के लिए, हम इन नियमों का पालन करेंगे -

  • हम समस्या को उल्टा कर सकते हैं, जैसे हम N से शुरू करने के बजाय M से शुरू करते हैं, तो दो नए ऑपरेशन होंगे
    • संख्या को 2 से विभाजित करें, जब यह सम हो,
    • संख्या में 1 जोड़ें
  • अब न्यूनतम ऑपरेशनों की संख्या होगी
    • यदि N > M, तो उनके बीच का अंतर वापस करें, तो चरणों की संख्या M में 1 जोड़ना होगा, जब तक यह N के बराबर न हो जाए
    • अन्यथा जब N < M, M को 2 से विभाजित करते रहें, जब तक यह N से कम न हो जाए। यदि M विषम है, तो पहले इसमें 1 जोड़ें, फिर 2 से विभाजित करें, एक बार M, N से कम हो जाए, तो ऊपर के ऑपरेशनों की गिनती के साथ अंतर को काउंट में जोड़ें।

उदाहरण

#include <iostream>
using namespace std;

int countMinimumSteps(int n, int m) {
    int count = 0;
    while (m > n) {
        if (m % 2 == 1) {
            m++;
            count++;
        }
        m /= 2;
        count++;
    }
    return count + n - m;
}

int main() {
    int n = 4, m = 6;
    cout << "Minimum number of operations required: " << countMinimumSteps(n, m);
}

आउटपुट

Minimum number of operations required: 2

  1. C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें C++ का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात करें

    बिंदु X और Y के बीच n संख्या में इंटरमीडिएट ट्रेन स्टेशन हैं। उन विभिन्न तरीकों की गणना करें जिनसे ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई दो स्टेशन एक-दूसरे के बगल में न हों। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या ज्ञात करने के लिए हर संभव दृष्टिकोण की व्य

  1. C++ का उपयोग करके दिए गए बिंदुओं से संभावित चतुर्भुजों की संख्या ज्ञात करें C++ का उपयोग करके दिए गए बिंदुओं से संभावित चतुर्भुजों की संख्या ज्ञात करें

    यूक्लिडियन प्लेन ज्यामिति में एक चतुर्भुज चार शीर्षों और चार किनारों के साथ एक बहुभुज बनाता है। नाम 4-gon आदि। चतुर्भुजों के अन्य नामों में शामिल हैं और कभी-कभी उन्हें वर्ग, डिस्प्ले स्टाइल आदि के रूप में भी जाना जाता है।इस लेख में, हम दिए गए बिंदुओं से संभावित चतुर्भुजों की संख्या ज्ञात करने के दृष

  1. C++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढने का प्रोग्राम C++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढने का प्रोग्राम

    परिचय मान लीजिए हमारे पास ट्री एजेज की एक सूची है [u, v] के रूप में, जो इंगित करती है कि u और v के बीच एक अनडायरेक्टेड एज है। और हमारे पास दो मान x और y भी हैं। यदि हम नोड x पर हैं, और हमारा प्रतिद्वंद्वी नोड y पर है। पहले राउंड में हम चलते हैं, फिर अगले राउंड में प्रतिद्वंद्वी चलता है और इसी तरह।