কম্পিউটার টিউটোরিয়াল

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


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

স্ট্রোবোগ্রামেটিক সংখ্যা বলতে এমন সংখ্যাকে বোঝায় যা ১৮০ ডিগ্রি ঘুরালে একই দেখায়।

যেমন, ইনপুট হলে n = 2, তবে আউটপুট হবে ["11","69","88","96"]

সমাধানের ধাপগুলো:

  • একটি অ্যারে ret ডিফাইন করব

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

    • "0", "1", "8" যোগ করব

  • অন্যথায় −

    • খালি স্ট্রিং যোগ করব

  • n > 1 रहने পর্যন্ত n := n - 2 করে লুপ চালাব:

    • একটি টেম্প অ্যারে temp তৈরি করব

    • ret এর প্রতিটি স্ট্রিং s এর জন্য:

      • যদি n > 3 হয়, তবে "0" + s + "0" যোগ করব

      • "1" + s + "1", "8" + s + "8", "6" + s + "9", "9" + s + "6" যোগ করব

    • ret := temp

  • ret রিটার্ন করব

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন −

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

void print_vector(vector<string> 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;
    }
};

int main() {
    Solution ob;
    print_vector(ob.findStrobogrammatic(3));
}

ইনপুট

3

আউটপুট

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

  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  3. C++-এ সাবস্ট্রিং-এর সর্বোচ্চ ঘটনা গণনা

  4. C++-এ অ্যাডাম সংখ্যা (Adam Number) চেক করার পদ্ধতি