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

C++ प्रोग्राम 2D समतल में किसी अन्य बिंदु से एक बिंदु को पढ़ने के लिए चालों का पता लगाने के लिए

मान लीजिए, 2D समतल a और b में दो बिंदु हैं जिनके निर्देशांक क्रमशः (x1, y1) और (x2, y2) हैं। वर्तमान में, हम बिंदु 'ए' पर हैं और हम 1 की दूरी पर लंबवत या क्षैतिज रूप से आगे बढ़ सकते हैं। हम बिंदु a से बिंदु b पर जाते हैं, फिर बिंदु a पर वापस जाते हैं, और हम फिर से बिंदु b पर जाते हैं। इसे बिंदुओं a और b को छोड़कर एक ही बिंदु से एक से अधिक बार जाने की अनुमति नहीं है। हमें इस पूरी यात्रा में किए जाने वाले कदमों का पता लगाना होगा, और इसे आउटपुट करना होगा। यदि हम दाएं चलते हैं, तो हम 'R', 'L' यदि हम बाएं चलते हैं, 'U' ऊपर जाते हैं, और यदि हम नीचे जाते हैं तो 'D' प्रिंट करते हैं। एक बात हमें ध्यान रखनी है कि x2> x1 और y2> y1.

इसलिए, यदि इनपुट x1 =0, y1 =1, x2 =3, y2 =4 जैसा है, तो आउटपुट UUURRRDDDLLLLUUURRRRDDDDDLLLU

होगा।

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

s := a blank string
for initialize i := 0, when i < y2 - y1, update (increase i by 1), do:
   add "U" at the end of s
for initialize i := 0, when i < x2 - x1, update (increase i by 1), do:
   add "R" at the end of s
for initialize i := 0, when i < y2 - y1, update (increase i by 1), do:
   add "D" at the end of s
for initialize i := 0, when i < x2 - x1, update (increase i by 1), do:
   add "L" at the end of s
   add "LU" at the end of s
for initialize i := 0, when i < y2 - y1, update (increase i by 1), do:
   add "U" at the end of s
for initialize i := 0, when i < x2 - x1, update (increase i by 1), do:
   add "R" at the end of s
   add "RD" at the end of s
   add "RD" at the end of s
for initialize i := 0, when i < y2 - y1, update (increase i by 1), do:
   add "D" at the end of s
for initialize i := 0, when i < x2 - x1, update (increase i by 1), do:
   add "L" at the end of s
   add "LU" at the end of s
return s

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

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

string solve(int x1, int y1, int x2, int y2){
   string s = "";
   for(int i = 0; i < y2 - y1; i++)
      s.append("U");
   for(int i = 0; i < x2 - x1; i++)
      s.append("R");
   for(int i = 0; i < y2 - y1; i++)
      s.append("D");
   for(int i = 0; i < x2 - x1; i++)
      s.append("L");
   s.append("LU");
   for(int i = 0; i < y2 - y1; i++)
      s.append("U");
   for(int i = 0; i < x2 - x1; i++)
      s.append("R");
      s.append("RD");
      s.append("RD");
   for(int i = 0; i < y2 - y1; i++)  
      s.append("D");
   for(int i = 0; i < x2 - x1; i++) s.append("L");
      s.append("LU");
   return s;
}
int main() {
   int x1 = 0, y1 = 1, x2 = 3, y2 = 4; cout<< solve(x1, y1, x2, y2);
   return 0;
}

इनपुट

0, 1, 3, 4

आउटपुट

UUURRRDDDLLLLUUUURRRRDRDDDDLLLLU

  1. C++ प्रोग्राम ग्राफ में सुपर वर्टिस का पता लगाने के लिए

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं। कोने 1 से n तक गिने जाते हैं, और वे सरणी किनारों में दिए गए किनारों से जुड़े होते हैं। प्रत्येक शीर्ष का 1 से n तक की संख्या के भीतर x मान होता है जो कि सरणी मान में दिया जाता है। अब, हमें ग्राफ से अति शीर्षों का पता लगाना है। एक शीर्ष i को सु

  1. C++ प्रोग्राम एक ग्रिड में प्रबुद्ध कोशिकाओं की संख्या का पता लगाने के लिए

    मान लीजिए, हमें h * w आयामों का एक ग्रिड दिया गया है। ग्रिड में कोशिकाओं में या तो बल्ब या बाधाएं हो सकती हैं। एक लाइट बल्ब सेल स्वयं को और उसके दाएं, बाएं, ऊपर और नीचे की कोशिकाओं को रोशन करता है और प्रकाश कोशिकाओं के माध्यम से चमक सकता है जब तक कि कोई बाधा सेल प्रकाश को अवरुद्ध न करे। एक बाधा सेल

  1. C++ प्रोग्राम स्कोर की अधिकतम राशि का पता लगाने के लिए जिसे ग्राफ़ से घटाया जा सकता है

    मान लीजिए, एक भारित, अप्रत्यक्ष ग्राफ है जिसमें n कोने और m किनारे हैं। ग्राफ़ के स्कोर को ग्राफ़ में सभी किनारों के वज़न के योग के रूप में परिभाषित किया गया है। किनारे के वजन नकारात्मक हो सकते हैं, और यदि उन्हें हटा दिया जाता है तो ग्राफ का स्कोर बढ़ जाता है। हमें क्या करना है, हमें ग्राफ को कनेक्ट