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

C++ দিয়ে n জিনিস থেকে r জিনিস নেওয়ায় k জিনিস সदा একসাথে থাকার পারমুটেশন

n, r, k দেওয়া আছে। এখন আমাদের বের করতে হবে n জিনিস থেকে r জিনিস কতভাবে বেছে নেওয়া যায় যাতে নির্দিষ্ট k জিনিস সদা একসাথে থাকে। উদাহরণ −

ইনপুট: n = 8, r = 5, k = 2 আউটপুট: 960
ইনপুট: n = 6, r = 2, k = 2 আউটপুট: 2

এই সমস্যাটি সমাধানের জন্য আমাদের কিছু জ্ঞান প্রয়োজন কারণ এটি n এবং r-এর পারমুটেশন বের করতে বলে যেখানে k জিনিস একসাথে থাকবে।

সমাধানের পদ্ধতি

এই প্রশ্নের জন্য আমাদের একটি সূত্র তৈরি করতে হবে, যা আমাদের উত্তর দেবে।

উদাহরণ
 #include <bits/stdc++.h> using namespace std; int fact(int n){ // ফ্যাক্টোরিয়াল ফাংশন     if(n <= 1) return 1;     return n * fact(n-1); } int npr(int n, int r){ // পারমুটেশন ফাংশন     int pnr = fact(n) / fact(n - r);     return pnr; } int countPermutations(int n, int r, int k){ // আমাদের তৈরি করা সূত্র     return fact(k) * (r - k + 1) * npr(n - k, r - k); } int main(){     int n = 8;     int r = 5;     int k = 2;     cout << countPermutations(n, r, k);     return 0; }
আউটপুট
960
কোডের ব্যাখ্যা

উপরের পদ্ধতিতে, আমরা উত্তর বের করার জন্য একটি সূত্র তৈরি করার চেষ্টা করেছি। এই সমস্যায় আমরা যে সূত্রটি বের করেছি সেটি হলো: (k!) × (r - k + 1) × P(n-k, r-k)। (P(x, y) = x থেকে y বেছে নেওয়ার পারমুটেশন সংখ্যা)। এই সূত্রটি প্রয়োগ করে আমরা উত্তর বের করেছি।

উপসংহার

এই টিউটোরিয়ালে আমরা n জিনিস থেকে r জিনিস নেওয়ায় k জিনিস সদা একসাথে থাকার পারমুটেশন বের করার সমস্যা সমাধান করেছি। আমরা এই সমস্যার C++ প্রোগ্রাম ও সম্পূর্ণ পদ্ধতি দেখেছি। একই প্রোগ্রাম C, Java, Python ইত্যাদি ভাষায়ও লিখা যায়। আশা করি আপনি এই টিউটোরিয়ালটি সহায়ক পাবেন।

  1. সি++-এ {0,1,2,3,4,5} অঙ্ক দিয়ে বने n-তম সংখ্যা

  2. বাইনারি স্ট্রিংর XOR ০ হলে সাইক্লিক পারমুটেশনের সংখ্যা গণনা (C++)

  3. C++-এ এক্সপ্রেশন ট্রি (Expression Tree) উদাহরণসহ

  4. C++-এ ৩n স্লাইস পিজা (Pizza With 3n Slices)