একটি সমস্যা সমাধান করতে হবে যেখানে n = মানুষের সংখ্যা। প্রতিটি মানুষ একা থাকতে পারে বা একটি জোড়া (pair) তৈরি করতে পারে। আমাদের বের করতে হবে এই মানুষগুলো কতভাবে জোড়া বাঁধা যায়।
ইনপুট: 3 আউটপুট: 4 ব্যাখ্যা: [{1}, {2}, {3}], [{1, 2}, {3}], [{1}, {2, 3}], [{1, 3}, {2}] - এই ৪টি উপায়েই ৩ জন মানুষ জোড়া বাঁধা যায়।
ইনপুট: 6 আউটপুট: 76
এই পদ্ধতিতে, আমরা ইয়ং ট্যাব্লো (Young Tableau) ফর্মুলা ব্যবহার করব এই সমস্যা সমাধানের জন্য। আমরা যে সূত্রটি ব্যবহার করব সেটি হলো −
A[n] = A[n-1] + (n-1) * A[n-2]
উপরোক্ত পদ্ধতির C++ কোড
#include <bits/stdc++.h> using namespace std; int Young_Tableau(int n){ int A[n + 1]; // উত্তর রাখার অ্যারে A[1] = 1; // ইনিশিয়াল ভ্যালু A[2] = 2; // ইনিশিয়াল ভ্যালু for (int i = 3; i <= n; i++) { // ইয়ং ট্যাব্লো সূত্র প্রয়োগ A[i] = A[i - 1] + (i - 1) * A[i - 2]; } return A[n]; // উত্তর রিটার্ন } int main(){ int n = 6; cout << Young_Tableau(n); return 0; }
76
উপরের পদ্ধতিতে, আমরা সহজে ইয়ং ট্যাব্লোর ফর্মুলা প্রয়োগ করি, যেখানে আসল দুইটি পূর্ববর্তী সংখ্যা দরকার। এগুলো অ্যারে ইনডেক্সে সংরক্ষণ করে সূত্রে বসিয়ে উত্তর বের করি।
এই টিউটোরিয়ালে আমরা মানুষ জোড়া বাঁধার উপায়ের সংখ্যা বের করার সমস্যা সমাধান করেছি। আমরা এই সমস্যার C++ প্রোগ্রাম ও সম্পূর্ণ পদ্ধতি দেখেছি। একই প্রোগ্রাম C, Java, Python ইত্যাদি ভাষায়ও লিখা যায়। আশা করি আপনি এই টিউটোরিয়ালটি সহায়ক পাবেন।