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

C++-এ লাইন সেগমেন্টের সেন্টার সরিয়ে ইন্টারসেকশন এর সর্বোচ্চ দৈর্ঘ্য বের করার প্রোগ্রাম


সমস্যা বিবরণ

৩টি লাইন সেগমেন্টের সেন্টার এবং দৈর্ঘ্য দেওয়া থাকলে, প্রতিটি সেন্টার কেবল K দূরত্ব সরানো যাবে। তিনটি সেগমেন্টের ইন্টারসেকশন রিজনের দৈর্ঘ্য সর্বোচ্চ কত হবে তা বের করুন।

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

  1. সেন্টারগুলো সর্ট করুন: center[0] <= center[1] <= center[2]।
  2. সর্বোচ্চ দূরত্ব = center[2] - center[0]।
  3. যদি center[2] - center[0] >= 2*k + length → ইন্টারসেকশন ০।
  4. যদি center[2] - center[0] >= 2*k → ইন্টারসেকশন = 2*k - (center[2] - center[0] - length)।
  5. অন্যথায় ইন্টারসেকশন = length (পুরোপুরি ওভারল্যাপ)।

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

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

int max_intersection(int* center, int length, int k) {
    sort(center, center + 3);
    if (center[2] - center[0] >= 2 * k + length) {
        return 0;
    } else if (center[2] - center[0] >= 2 * k) {
        return (2 * k - (center[2] - center[0] - length));
    } else {
        return length;
    }
}

int main() {
    int center[3] = {1, 2, 3};
    int L = 1;
    int K = 1;
    cout << max_intersection(center, L, K);
    return 0;
}

আউটপুট

1

ব্যাখ্যা

সেন্টার: 1, 2, 3। দৈর্ঘ্য ১। K=1।

সেন্ট্রার রেঞ্জ: ৩-১=২। ২k=২।

২k + length = ৩। ২ < ৩, তাই দীয়া শর্তে পড়ে। ইন্টারসেকশন = length = ১।

জটিলতা

  • সময়: O(1)
  • স্থান: O(1)
  1. সি++-এ ক্লির অ্যালগরিদম (Klee's Algorithm) - লাইন সেগমেন্টের ইউনিয়নের দৈর্ঘ্য

  2. C++-এ বাড়ি থেকে চুরি করা সম্ভাব্য সর্বোচ্চ মান খুঁজুন

  3. C++-এ Line Reflection: ২D প্লেনে বিন্দুগুলোর Y-অক্ষ সমান্তরাল প্রতিফলন লাইন আছে কিনা যাচাই করা

  4. C++-এ একটি রেখায় সর্বোচ্চ পয়েন্ট (Max Points on a Line)