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

C++ में एक अनंत रेखा पर लक्ष्य तक पहुँचने के लिए न्यूनतम चालें खोजें

मान लीजिए हमारे पास अनंत संख्या रेखा में एक संख्या की स्थिति है। (-इन्फ से +इन्फ)। 0 से शुरू करके हमें बताए अनुसार आगे बढ़ते हुए लक्ष्य तक पहुंचना है। इस चाल में, हम या तो बाएँ या दाएँ कदम जा सकते हैं। हमें आवश्यक चालों की न्यूनतम संख्या ज्ञात करनी है। मान लीजिए लक्ष्य 2 है, तो न्यूनतम चरण 3 होंगे। 0 से 1 तक, 1 से -1 तक और -1 से 2 तक।

इस समस्या को हल करने के लिए हमें कुछ महत्वपूर्ण बिंदुओं को याद रखना होगा। यदि लक्ष्य ऋणात्मक है, तो इसे केवल धनात्मक मान लें, क्योंकि संख्या रेखा समान है। हल करने के लिए, विचार को यथासंभव लंबे समय तक एक दिशा में ले जाना है। तो 0 से 1 तक, 1 से 3 (1 + 2), 3 से 6 (1 + 2 + 3) और इसी तरह। इस प्रकार यदि nवीं चाल के बाद लक्ष्य मिल जाता है, तो बस चालों की संख्या लौटा दें। लेकिन अगर स्थापित बिंदु लक्ष्य से बड़ा है, तो हमें कितना आगे है इसके बीच का अंतर खोजना होगा। अब हम देख सकते हैं, यदि हम एक कदम पीछे की ओर बढ़ते हैं, तो योग (योग – 2i) होगा। अब अगर योग -2i लक्ष्य है, तो हमें परिणाम मिल गया है। लेकिन अंतर सम या विषम हो सकता है। सम के लिए, परिणाम के रूप में n लौटाएं, अन्यथा, हम एक और कदम उठाते हैं। तो योग में n + 1 जोड़ें और अब फिर से अंतर लें। यदि n + 1 लक्ष्य है, तो वापस लौटें, अन्यथा n + 2 के साथ एक और चरण करें।

उदाहरण

#include<iostream>
#include<cmath>
using namespace std;
int minStepToTarget(int target) {
   target = abs(target);
   int sum = 0, min_step = 0;
   while (sum < target || (sum - target) % 2 != 0) {
      min_step++;
      sum += min_step;
   }
   return min_step;
}
int main() {
   int target = 11;
   cout << "Minimum step to reach the target is: " << minStepToTarget(target);
}

आउटपुट

Minimum step to reach the target is: 5

  1. C++ में बाइनरी ट्री में अधिकतम (या न्यूनतम) खोजें

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा काम बाइनरी ट्री में अधिकतम (या न्यूनतम) खोजना है। समस्या का विवरण: हमें बाइनरी ट्री के उन नोड्स को खोजने की आवश्यकता है जिनका बाइनरी ट्री में अधिकतम और न्यूनतम मान है। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: आउटपुट: अधिकतम

  1. C++ में एक लाइन के मध्य-बिंदु को खोजने का प्रोग्राम

    इस समस्या में, हमें दो बिंदु A और B दिए गए हैं, जो एक रेखा के आरंभ और अंत बिंदु हैं। हमारा काम C++ में एक लाइन के मध्य-बिंदु को खोजने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण - यहाँ, हमारे पास एक रेखा है जिसमें शुरुआती और अंत बिंदु A(x1, y1) और B(x2, y2) हैं। और हमें रेखा के मध्य-बिंदु को खोजन

  1. C++ में न्यूनतम नाइट मूव्स

    मान लीजिए कि हमारे पास एक अनंत शतरंज की बिसात है जिसमें -infinity से +infinity तक के निर्देशांक हैं, और हमारे पास वर्ग [0, 0] पर एक नाइट है। एक शूरवीर के पास 8 संभावित चालें हैं, जैसा कि नीचे दिखाया गया है। प्रत्येक चाल एक कार्डिनल दिशा में दो वर्ग है, फिर एक वर्ग एक ओर्थोगोनल दिशा में है। हमें न