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

C++-তে N কন্টেইনার থেকে এক ধরনের প্রোবাবিলিটি সর্বোচ্চ করা


প্রোবাবিলিটি Pi = (অনুকূল ফলাফলের সংখ্যা) / (মোট ফলাফলের সংখ্যা)।

দেওয়া আছে N সংখ্যক কন্টেইনার এবং দুটি সংখ্যা X ও Y-এর N কপি প্রতিটি। টাস্ক হলো X-এর কপিগুলো N কন্টেইনারে এভাবে বিতরণ করা যাতে X পাওয়ার প্রোবাবিলিটি সর্বোচ্চ হয়। এটি করার জন্য হয় অনুকূল ফলাফল বড় করতে হবে অথবা মোট ফলাফল ছোট করতে হবে। এর জন্য একটি কন্টেইনারে শুধু Y রাখা হয় এবং বাকি সব কন্টেইনারে X রাখা হয়।

N-1 কন্টেইনারে প্রতিটায় X-এর ১ কপি (মোট N-1 কপি X)। এবং ১ কন্টেইনারে Y-এর ১ কপি এবং X-এর N কপি।

প্রথম (N-1) কন্টেইনার থেকে X পাওয়ার প্রোবাবিলিটি = P_{n-1} = 1

শেষ কন্টেইনার থেকে X পাওয়ার প্রোবাবিলিটি = P_n = 1/(N+1)

মোট প্রোবাবিলিটি Pm = P_{n-1} * (N-1) + P_n = N/(N+1)

ইনপুট − N=1

আউটপুট − Maximum probability for N=1 is 0.5

ব্যাখ্যা − শুধু ১ কন্টেইনার, ১ কপি X এবং Y। X পাওয়ার প্রোবাবিলিটি ০.৫।

ইনপুট − N=3

আউটপুট − Maximum probability for N=3 is 0.75

ব্যাখ্যা − সব কন্টেইনারে ১ কপি X এবং শেষ কন্টেইনারে ৩ কপি Y।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • N ইনপুট নিন।
  • maxP ভ্যারিয়েবলে সর্বোচ্চ প্রোবাবিলিটি সংরক্ষণ করুন।
  • প্রদত্ত N-এর জন্য maxP = N/(N+1) ক্যালকুলেট করুন।

উদাহরণ

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

int main() {
    int N = 3;
    double maxP = (double)N / (N + 1);
    cout << "Maximum Probability for N = " << N << " is, " << maxP << endl;
    return 0;
}

আউটপুট

Maximum Probability for N = 3 is, 0.75
  1. C++ দিয়ে স্ট্রিং থেকে প্রথম Xটি ভোয়েল (Vowel) বের করা

  2. C++ দিয়ে BFS ব্যবহার করে একটি ভার্টেক্স থেকে বাকি সব ভার্টেক্সে পথ বের করা

  3. সি++-এ অ্যারেতে একটি কী (Key) থাকার প্রোবাবিলিটি বের করার প্রোগ্রাম

  4. C++-এ চেসবোর্ডে ঘোড়ার সম্ভাবনা