কম্পিউটার

C++ এ একটি স্ট্রিং-এ একটি সেল একাধিকবার পরিদর্শন করা যায় কিনা তা পরীক্ষা করুন


ধরুন আমাদের কাছে ডট (.) এবং একটি সংখ্যা সহ একটি স্ট্রিং আছে, একটি বিন্দু নির্দেশ করে যে ঘরটি খালি আছে এবং যদি কোনো ঘরে একটি সংখ্যা x থাকে তবে এটি নির্দেশ করে যে আমরা স্ট্রিংয়ের মধ্যে x ধাপ ডানে বা বামে যেতে পারি। আমাদের কাজ হল আমরা একাধিকবার একটি সেল পরিদর্শন করতে পারি কিনা তা পরীক্ষা করা। উদাহরণস্বরূপ, যদি একটি স্ট্রিং "এর মতো হয়। 2 . . 2 .", তাহলে আমরা দুটি ভিন্ন উপায়ে 4র্থ কক্ষ পরিদর্শন করতে পারি। দ্বিতীয় ঘর থেকে দুই ধাপ ডানে, অথবা ঘর 6 থেকে দুই ধাপ বাম।

স্ট্রিং এর ith সেলটি কতবার পরিদর্শন করা যেতে পারে তার ট্র্যাক রাখতে আমরা ভিজিটেড[] নামে একটি অ্যারে ব্যবহার করব। এখন স্ট্রিংটি অতিক্রম করুন এবং বর্তমান অক্ষরটি ডট বা একটি সংখ্যা কিনা তা পরীক্ষা করুন। বিন্দুর জন্য, x-এর জন্য কিছুই করবেন না, সংখ্যা বাড়ান এবং পরিদর্শন করা অ্যারেতে [i – x, i + x] পরিসরের ভিজিট সংখ্যা 1 দ্বারা বৃদ্ধি করুন। পরিদর্শন করা অ্যারে অতিক্রম করে, যদি আমরা কিছু রুম পাই তাহলে পরিদর্শন করা হবে। একাধিকবার বা না।

উদাহরণ

#include <iostream>
#include <queue>
using namespace std;
class Node {
   public:
   int key;
   Node *left, *right;
};
Node* getNode(int key) {
   Node* newNode = new Node;
   newNode->key = key;
   newNode->left = newNode->right = NULL;
   return newNode;
}
bool isLevelWiseSorted(Node* root) {
   int prevMax = INT_MIN;
   int min_val, max_val;
   int levelSize;
   queue<Node*> q;
   q.push(root);
   while (!q.empty()) {
      levelSize = q.size();
      min_val = INT_MAX;
      max_val = INT_MIN;
      while (levelSize > 0) {
         root = q.front();
         q.pop();
         levelSize--;
         min_val = min(min_val, root->key);
         max_val = max(max_val, root->key);
         if (root->left)
            q.push(root->left);
         if (root->right)
            q.push(root->right);
      }
      if (min_val <= prevMax)
         return false;
         prevMax = max_val;
   }
   return true;
}
int main() {
   Node* root = getNode(1);
   root->left = getNode(2);
   root->right = getNode(3);
   root->left->left = getNode(4);
   root->left->right = getNode(5);
   root->right->left = getNode(6);
   root->right->right = getNode(7);
   if (isLevelWiseSorted(root))
      cout << "Tree is levelwise Sorted";
   else
      cout << "Tree is Not levelwise sorted";
}

আউটপুট

Tree is level wise Sorted

  1. একটি সংখ্যাকে C++ এ a^b হিসাবে প্রকাশ করা যায় কিনা তা পরীক্ষা করুন

  2. ইনপুট C++ এ সংখ্যাসূচক কিনা তা কিভাবে পরীক্ষা করবেন?

  3. একটি স্ট্রিং C++ এ একটি সাব-স্ট্রিং আছে কিনা তা পরীক্ষা করুন

  4. একটি C/C++ স্ট্রিং একটি int কিনা তা কীভাবে পরীক্ষা করবেন?