কম্পিউটার

C++-এ রোবট রিটার্ন টু অরিজিন


ধরুন একটি রোবট আছে এবং তার শুরুর অবস্থান হল (0, 0)। আমাদের যদি এর গতিবিধির একটি ক্রম থাকে, তাহলে আমাদের পরীক্ষা করতে হবে যে এই রোবটটি তার চলাফেরা সম্পূর্ণ করার পরে (0, 0) এ শেষ হয় কিনা৷

সরানোর ক্রমটি একটি স্ট্রিং হিসাবে দেওয়া হয়, এবং অক্ষর মুভ[i] তার ith মুভকে উপস্থাপন করে। চিহ্নগুলি হল ডানের জন্য R, বামের জন্য L, উপরের জন্য U এবং নীচের জন্য D। যদি রোবটটি তার সমস্ত চাল শেষ করার পরে মূলে ফিরে আসে, তবে সত্যে ফিরে আসুন। অন্যথায়, মিথ্যা ফেরত দিন।

সুতরাং, যদি ইনপুটটি "RRULLD" এর মত হয়, তাহলে আউটপুট হবে সত্য, ডান দুই-ইউনিট, তারপর উপরে যান, তারপরে বাম দুই ইউনিট তারপর আবার নিচে, তাই এটি হল শুরুর অবস্থান।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • l :=মুভ অ্যারের আকার

  • যদি l 0 এর সমান হয়, তাহলে −

    • প্রত্যাবর্তন সত্য

  • lft :=0, আপ :=0

  • আরম্ভ করার জন্য i :=0, যখন i

    • যদি চলন[i] 'L' এর মত হয়, তাহলে −

      • (1 দ্বারা lft বাড়ান)

    • যদি চাল[i] 'R' এর মত হয়, তাহলে −

      • (1 দ্বারা lft কমান)

    • যদি চাল[i] 'U' এর মত হয়, তাহলে −

      • (1 দ্বারা বৃদ্ধি)

    • যদি চাল[i] 'D' এর মত হয়, তাহলে −

      • (1 দ্বারা কমে)

  • যদি lft 0 এর সমান হয় এবং উপরেরটি 0 এর মত হয়, তাহলে −

    • প্রত্যাবর্তন সত্য

  • ফেরত মিথ্যা

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool judgeCircle(string moves) {
      int l = moves.length();
      if (l == 0) {
         return true;
      }
      int lft = 0, up = 0;
      for (int i = 0; i < l; i++) {
         if (moves[i] == 'L') {
            lft++;
         }
         if (moves[i] == 'R') {
            lft--;
         }
         if (moves[i] == 'U') {
            up++;
         }
         if (moves[i] == 'D') {
            up--;
         }
      }
      if (lft == 0 && up == 0) {
         return true;
      }
      return false;
   }
};
main(){
   Solution ob;
   cout << (ob.judgeCircle("RRULLD"));
}

ইনপুট

"RRULLD"

আউটপুট

1

  1. C++ তে বিসিমেট্রিক ম্যাট্রিক্স?

  2. এন-কুইন সমস্যা সমাধানের জন্য C++ প্রোগ্রাম

  3. C++ এ অকার্যকর ফাংশন থেকে ফিরে আসুন

  4. কিভাবে C++ এ "একটি অবজেক্ট রিটার্ন" করবেন?