কম্পিউটার

C++ এ স্ট্রোবোগ্রামেটিক নম্বর II


ধরুন আমাদের একটি দৈর্ঘ্য n আছে। আমাদের এন দৈর্ঘ্যের সমস্ত স্ট্রোবোগ্রাম্যাটিক সংখ্যা খুঁজে বের করতে হবে।

আমরা জানি যে স্ট্রোবোগ্রাম্যাটিক সংখ্যা হল এমন একটি সংখ্যা যা 180 ডিগ্রি ঘোরার সময় একই রকম দেখায়।

সুতরাং, যদি ইনপুট n =2 এর মত হয়, তাহলে আউটপুট হবে ["11",","69","88","96">

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

  • একটি অ্যারে ret সংজ্ঞায়িত করুন

  • যদি n বিজোড় হয়, তাহলে −

    • ret এর শেষে "0" ঢোকান

    • ret এর শেষে "1" সন্নিবেশ করুন

    • ret এর শেষে "8" ঢোকান

  • অন্যথায়

    • ret এর শেষে ফাঁকা স্ট্রিং ঢোকান

  • n> 1 এর জন্য, n :=n - 2 আপডেট করুন, −

    করুন
    • একটি অ্যারের তাপমাত্রা সংজ্ঞায়িত করুন

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

      • s :=ret[i]

      • যদি n> 3 হয়, তাহলে −

        • টেম্পের শেষে "0" concatenate s concatenate "0" সন্নিবেশ করুন

      • টেম্পের শেষে "1" concatenate s concatenate "1" সন্নিবেশ করুন

      • টেম্পের শেষে "8" concatenate s concatenate "8" সন্নিবেশ করুন

      • টেম্পের শেষে "6" concatenate s concatenate "9" ঢোকান

      • টেম্পের শেষে "9" concatenate s concatenate "6" ঢোকান

    • ret :=temp

  • রিটার্ন রিটার্ন

উদাহরণ

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

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto< v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<string< findStrobogrammatic(int n) {
      vector<string< ret;
      if (n & 1) {
         ret.push_back("0");
         ret.push_back("1");
         ret.push_back("8");
      }
      else {
         ret.push_back("");
      }
      for (; n > 1; n -= 2) {
         vector<string< temp;
         for (int i = 0; i < ret.size(); i++) {
            string s = ret[i];
            if (n > 3) {
               temp.push_back("0" + s + "0");
            }
            temp.push_back("1" + s + "1");
            temp.push_back("8" + s + "8");
            temp.push_back("6" + s + "9");
            temp.push_back("9" + s + "6");
         }
         ret = temp;
      }
      return ret;
   }
};
main(){
   Solution ob;
   print_vector(ob.findStrobogrammatic(3));
}

ইনপুট

3

আউটপুট

[101, 808, 609, 906, 111, 818, 619, 916, 181, 888, 689, 986, ]

  1. C++ এ মিতব্যয়ী নম্বর

  2. C++ পেন্টাটোপ নম্বর

  3. C++ এ একটি সাবস্ট্রিং-এর সংঘটনের সর্বাধিক সংখ্যা

  4. C++ এ অ্যাডাম নম্বর