বিন্দু X এবং Y-এর মধ্যে n সংখ্যক মধ্যবর্তী ট্রেন স্টেশন আছে। ট্রেনগুলোকে s সংখ্যক স্টেশনে কতভাবে স্টপ করানো যায় যাতে কোনো দুটি স্টেশন পাশাপাশি না থাকে। এই আর্টিকেলে আমরা সকল সম্ভাব্য পদ্ধতি আলোচনা করব যাতে ট্রেন স্টপেজের সংখ্যা বের করা যায়। সমস্যাটি দেখে লাগে আমাদের কম্বিনেশন বের করতে হবে যাতে ট্রেনগুলো s সংখ্যক স্টেশনে স্টপ করতে পারে।
সমাধানের পদ্ধতিসমূহ
মান লইয়া যাক ৮টি মধ্যবর্তী স্টেশন আছে এবং আমাদের ৩টি স্টেশনে ট্রেন স্টপ করাতে হবে।
n = 8, s = 3
আমাদের কাছে (n - s) অর্থাৎ ৫টি স্টেশন আছে যেখান ট্রেন স্টপ করবে না,

এখানে A, B, C, D, E - এই ৫টি স্টেশনে ট্রেন স্টপ করবে না। এখন আমাদের কাছে ৬টি ডট্টেড জায়গা আছে যেখানে ৩টি স্টপেজ স্টেশন বসানো যাবে যাতে কোনো দুটি স্টেশন লগ কর না থাকে। তাই উপায় সংখ্যা হবে:
⁶C₃ = [fact(6) / fact(3)] / fact(3) = 6 * 5 * 4 / 3 * 2 * 1 = 20
X এবং Y বিন্দুর মধ্যে ৩টি স্টপেজ স্টেশন বসানোর ২০টি উপায় আছে। উদাহরণ:
ইনপুট : n = 15 s = 4 আউটপুট : 495 ইনপুট : n = 8 s = 3 আউটপুট : 20
উদাহরণ
#include<bits/stdc++.h> using namespace std; int main(){ int n = 8, s = 3; int flag1 = 1, flag2 = 1, temp = s, ans; // 'n-s+1' থেকে 's' পজিশন সিলেক্ট করা int x = n - s + 1; while (x != (n - 2 * s + 1)) { flag1 = flag1 * x; x--; } while (temp != 1) { flag2 = flag2 * temp; temp--; } ans = flag1 / flag2; if ((n - s + 1) >= s) cout << "Number of ways : " << ans; else cout << "not possible to find"; return 0; }
আউটপুট
Number of ways : 20
উপরোক্ত কোডের ব্যাখ্যা
এই C++ কোড বুঝতে আমরা সমাধানকে ধাপে ভাগ করতে পারি:
স্টেশনের সংখ্যা n এবং স্টপেজ স্টেশন s ইনপুট নেওয়া।
flag1এবংflag2ভেরিয়েবল ১ দিয়ে ইনিশিয়ালাইজ করা এবংs-র মানtemp-এ রাখা।flag1হিসাব করা যা হচ্ছে লব [fact(n) - fact(r)]।flag2হিসাব করা যা হচ্ছে হর [fact(r)]।ফলাফল প্রিন্ট করা।
উপসংহার
এই আর্টিকেলে আমরা সমাধান করেছি যে ট্রেনগুলো মধ্যবর্তী স্টেশনগুলোর কোনো দুটি লগ না করে s সংখ্যক স্টেশনে কতভাবে স্টপ করানো যায়। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং সমাধানের পূর্ণ পদ্ধতি শিখেছি। একই প্রোগ্রাম C, Java, Python বা অন্য ভাষায় লেখা যায়।