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

C++-এ শহর এবং স্টেশনের মধ্যে সর্বোচ্চ দূরত্ব নির্ণয়


কনসেপ্ট

N সংখ্যক শহর (০ থেকে N-1 নম্বরিং) এবং স্টেশন থাকা শহরগুলো দেওয়া আছে। যেকোনো শহর থেকে তার নিকটতম স্টেশনের মধ্যে সর্বোচ্চ দূরত্ব নির্ণয় করুন। স্টেশন থাকা শহরগুলো যেকোনো ক্রমে দেওয়া হতে পারে।

ইনপুট ১

numOfCities = 6, stations = [2, 4]

আউটপুট ১

2

ইনপুট ২

numOfCities = 6, stations = [4]

আউটপুট ২

4

পদ্ধতি

তিনটি সম্ভাব্য কেস:

  • সর্বোচ্চ দূরত্বের শহর দুইটি স্টেশনের মাঝপথে।
  • প্রথম স্টেশনের বামপাশে।
  • শেষ স্টেশনের ডানপাশে।

অ্যালগরিদম: ১) বুলিয়ান অ্যারে দিয়ে স্টেশন থাকা শহরগুলো মার্ক করুন। ২) dist = 0, maxDist = প্রথম স্টেশনের ইনডেক্স (দ্বিতীয় কেসের জন্য)। ৩) সব শহর দিয়ে লুপ করুন। যদি স্টেশন পাওয়া যায়, maxDist = max((dist+1)/2, maxDist) এবং dist = 0। নয়লে dist++। ৪) অবশেষে max(maxDist, dist) ফেরত দিন (তৃতীয় কেসের জন্য)।

উদাহরণ (C++ কোড)

// C++ প্রোগ্রাম: যেকোনো শহর থেকে নিকটতম স্টেশনের সর্বোচ্চ দূরত্ব
#include <bits/stdc++.h>
using namespace std;

int findMaxDistance(int numOfCities1, int station1[], int N) {
    bool hasStation[numOfCities1 + 1] = {false};
    for (int city1 = 0; city1 < N; city1++)
        hasStation[station1[city1]] = true;
    int dist1 = 0;
    int maxDist1 = INT_MAX;
    for (int i = 0; i < N; i++)
        maxDist1 = min(station1[i], maxDist1);
    for (int city1 = 0; city1 < numOfCities1; city1++) {
        if (hasStation[city1] == true) {
            maxDist1 = max((dist1 + 1) / 2, maxDist1);
            dist1 = 0;
        } else
            dist1 += 1;
    }
    return max(maxDist1, dist1);
}

int main() {
    int numOfCities1 = 6;
    int station1[] = {2, 4};
    int N = sizeof(station1) / sizeof(station1[0]);
    cout << "সর্বোচ্চ দূরত্ব: " << findMaxDistance(numOfCities1, station1, N);
    return 0;
}

আউটপুট

সর্বোচ্চ দূরত্ব: 2
  1. C++-এ ভালো নোডগুলোর মধ্যে সবচেয়ে ছোট দূরত্ব খুঁজে বের করা

  2. C++-এ বাইনারি ট্রি-এ দুটি নোডের দূরত্ব O(log n) মেথড

  3. সি++-এ যেকোনো দুটি ভিন্ন সংখ্যার ইন্ডেক্স পার্থক্যের সর্বোচ্চ মান বের করার প্রোগ্রাম

  4. C++-এ থ্রেশহোল্ড দূরত্বে সবচেয়ে কম প্রতিবেশী город খুঁজে বের করা