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

C++-এ একটি শব্দকে প্যালিনড্রোম (Palindrome) পার্টিশন করার উপায় গণনা


এখানে আমরা একটি শব্দকে প্যালিনড্রোম পার্টিশন করার কতগুলো উপায় আছে তা বের করার C++ প্রোগ্রাম দেখব।

এলগরিদম

Begin
    শব্দটি ইনপুট নিন।
    Function partitionadd(vector> &u, string &s, vector &tmp, int index):
        if (index == 0) tmp.clear()
        for i = index to length-1
            st = st + s[i]
            if (checkPalin(st))
                tmp.push_back(st)
                if (i+1 < length)
                    partitionadd(u, s, tmp, i+1)
                else
                    u.push_back(tmp)
                tmp = curr
    return End
Begin
    Function partition(string st, vector> &u):
        vector tmp
        addStrings(u, st, tmp, 0)
        printSol(u) // সমাধান প্রিন্ট
    return End

উদাহরণ

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

bool checkPalin(string s) { // স্ট্রিং প্যালিনড্রোম কিনা চেক
    int length = s.length();
    length--;
    for (int i = 0; i < length; i++) {
        if (s[i] != s[length])
            return false;
        length--;
    }
    return true;
}

void printSol(vector> part) { // সমাধান প্রিন্ট
    for (int i = 0; i < part.size(); ++i) {
        for(int j = 0; j < part[i].size(); ++j)
            cout << part[i][j] << " ";
        cout << endl;
    }
    return;
}

void partitionadd(vector> &u, string &s, vector &tmp, int index) {
    int length = s.length();
    string st;
    vector curr = tmp;
    if (index == 0)
        tmp.clear();
    for (int i = index; i < length; ++i) {
        st = st + s[i];
        if (checkPalin(st)) {
            tmp.push_back(st);
            if (i+1 < length)
                partitionadd(u, s, tmp, i+1);
            else
                u.push_back(tmp);
            tmp = curr;
        }
    }
    return;
}

void partition(string st, vector> &u) { // স্ট্রিংয়ের সব প্যালিনড্রোমিক পার্টিশন জেনারেট
    vector tmp;
    partitionadd(u, st, tmp, 0); // নোট: মূল কোডে addStrings কল ছিল, এখানে partitionadd কল করা হয়েছে
    printSol(u);
    return;
}

int main() {
    string s = "tutorials";
    vector> part;
    cout << "the number of partitions:" << endl;
    partition(s, part);
    return 0;
}

আউটপুট

the number of partitions:
t u t o r i a l s
tut o r i a l s
  1. C++ প্রোগ্রাম: ইউনিক পেয়ার বের করা যারা N-র চোয় ছোট ও শর্ত পূরণ করে

  2. C++-এ A-এ N অঙ্ক যোগ করে প্রতিটি যোগফলে B দ্বারা বিভাজ্য রাখা

  3. C++ প্রোগ্রাম: স্ট্রিংয়ের পারমুটেশন সংখ্যা বের করা

  4. পাইথনে বাইনারি স্ট্রিং তিনটি সমান '১' সম্বলিত অংশে ভাগ করার পদ্ধতির সংখ্যা